MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your dashboard and clicking Generate API token. Endpoints under /api/v1/external take the token in an X-API-Token header instead.

Endpoints

Basic health check endpoint

requires authentication

Returns simple health status for load balancers and monitoring systems.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/health" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/health"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 42b418ed-1eb4-4a72-9300-415641c30c07
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.301526Z",
    "context": {
        "path": "/api/v1/ai/health",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/health

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Detailed health check endpoint

requires authentication

Returns comprehensive health information including circuit breaker status.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/health/detailed" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/health/detailed"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7d20e82b-1988-49f7-833c-8ae7831b3c3d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.326978Z",
    "context": {
        "path": "/api/v1/ai/health/detailed",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/health/detailed

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Circuit breaker status endpoint

requires authentication

Returns detailed circuit breaker metrics for debugging and monitoring.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/health/circuit-breakers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/health/circuit-breakers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 05461bf3-b1c0-4760-91e4-5242ee446c06
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.328908Z",
    "context": {
        "path": "/api/v1/ai/health/circuit-breakers",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/health/circuit-breakers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Reset circuit breaker endpoint

requires authentication

Allows manual reset of circuit breakers (admin only).

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/ai/health/circuit-breakers/reset" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"service\": \"b\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/health/circuit-breakers/reset"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "service": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ai/health/circuit-breakers/reset

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

service   string     

Must not be greater than 255 characters. Example: b

Get system health score

requires authentication

Returns a single health score for load balancer checks.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/health/score" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/health/score"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f20933ed-e43c-4ce6-9a70-9d16e1ba31cb
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.345866Z",
    "context": {
        "path": "/api/v1/ai/health/score",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/health/score

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Export metrics in Prometheus format

requires authentication

Used by Prometheus scraper to collect metrics.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/metrics/prometheus" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/metrics/prometheus"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5ff59874-76a9-42e2-8b89-a06ed9f5e39a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.347843Z",
    "context": {
        "path": "/api/v1/ai/metrics/prometheus",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/metrics/prometheus

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get metrics summary in JSON format

requires authentication

Human-readable metrics summary for dashboards and debugging.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/metrics/summary" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/metrics/summary"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 23167881-40d7-4620-8977-701267ee8ab1
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.349652Z",
    "context": {
        "path": "/api/v1/ai/metrics/summary",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/metrics/summary

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get detailed monitoring status

requires authentication

Includes alert status, health scores, and system metrics.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/metrics/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/metrics/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 55b6b0b2-433a-490f-a215-07fca5fbbadd
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.351428Z",
    "context": {
        "path": "/api/v1/ai/metrics/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/metrics/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Trigger test alert

requires authentication

Used for testing alert delivery and monitoring systems.

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/ai/metrics/test-alert" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/metrics/test-alert"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/ai/metrics/test-alert

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get alert history

requires authentication

Returns recent alerts for monitoring dashboard.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/metrics/alerts" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/metrics/alerts"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b0d91546-5134-49dc-ba66-dfeaa1100763
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.353820Z",
    "context": {
        "path": "/api/v1/ai/metrics/alerts",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/metrics/alerts

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get all feature flags status

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/feature-flags" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/feature-flags"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cc7c0114-8253-456b-a540-6ec257e53338
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.371257Z",
    "context": {
        "path": "/api/v1/ai/feature-flags",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/feature-flags

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get feature flag statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/feature-flags/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/feature-flags/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a37bf232-66bd-4e3d-9931-6d3ae15094c9
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.375106Z",
    "context": {
        "path": "/api/v1/ai/feature-flags/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/feature-flags/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Check specific feature flag status

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/feature-flags/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/feature-flags/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 269ebda4-9ee9-4332-ad0c-3876a888822d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.379209Z",
    "context": {
        "path": "/api/v1/ai/feature-flags/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/feature-flags/{feature}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

feature   string     

Example: architecto

Enable a feature flag

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/enable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"strategy\": \"global\",
    \"percentage\": 1,
    \"user_ids\": [
        16
    ],
    \"environments\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/enable"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "strategy": "global",
    "percentage": 1,
    "user_ids": [
        16
    ],
    "environments": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ai/feature-flags/{feature}/enable

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

feature   string     

Example: architecto

Body Parameters

value   string  optional    
strategy   string  optional    

Example: global

Must be one of:
  • global
  • percentage
  • user_targeting
  • environment
percentage   integer  optional    

Must be at least 0. Must not be greater than 100. Example: 1

user_ids   integer[]  optional    
environments   string[]  optional    

Disable a feature flag

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/disable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/disable"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/ai/feature-flags/{feature}/disable

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

feature   string     

Example: architecto

Configure percentage rollout

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/percentage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"percentage\": 1
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/percentage"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "percentage": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ai/feature-flags/{feature}/percentage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

feature   string     

Example: architecto

Body Parameters

percentage   integer     

Must be at least 0. Must not be greater than 100. Example: 1

value   string  optional    

Configure user targeting

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user_ids\": [
        16
    ]
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "user_ids": [
        16
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ai/feature-flags/{feature}/users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

feature   string     

Example: architecto

Body Parameters

user_ids   integer[]  optional    

Must be at least 1.

value   string  optional    

Configure A/B test

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/ab-test" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"variants\": []
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/feature-flags/architecto/ab-test"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "variants": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ai/feature-flags/{feature}/ab-test

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

feature   string     

Example: architecto

Body Parameters

variants   object     

Must have at least 2 items.

default_value   string  optional    

POST api/security/csp-report

Example request:
curl --request POST \
    "https://forgefile.com/api/security/csp-report" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/security/csp-report"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/security/csp-report

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/security/health

Example request:
curl --request GET \
    --get "https://forgefile.com/api/security/health" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/security/health"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-125f85bc1c4c7ae5a4629d9e7040e1f5-bc1b349d0d365ddb-01
x-trace-id: 125f85bc1c4c7ae5a4629d9e7040e1f5
x-span-id: bc1b349d0d365ddb
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496162
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5576fc82-04c9-4574-ab1e-54f3320c2344
 

{
    "status": "healthy",
    "timestamp": "2026-09-04T04:28:22.402837Z",
    "security_features": {
        "sql_injection_protection": null,
        "xss_protection": null,
        "brute_force_protection": null,
        "ddos_protection": null,
        "security_headers": true
    }
}
 

Request      

GET api/security/health

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get MFA status for current user

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/mfa/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/mfa/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: de05628a-1f88-45a0-b510-a8a6cf1f5742
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.420160Z",
    "context": {
        "path": "/api/mfa/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/mfa/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Setup TOTP for current user

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/mfa/setup/totp" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/mfa/setup/totp"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/mfa/setup/totp

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Enable TOTP after verification

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/mfa/enable/totp" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"bngzmi\"
}"
const url = new URL(
    "https://forgefile.com/api/mfa/enable/totp"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "bngzmi"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mfa/enable/totp

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

Must be 6 characters. Example: bngzmi

Send MFA code via SMS

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/mfa/send/sms" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/mfa/send/sms"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/mfa/send/sms

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Send MFA code via email

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/mfa/send/email" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/mfa/send/email"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/mfa/send/email

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Verify MFA code

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/mfa/verify" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"architecto\",
    \"method\": \"backup\"
}"
const url = new URL(
    "https://forgefile.com/api/mfa/verify"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "architecto",
    "method": "backup"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mfa/verify

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

Example: architecto

method   string  optional    

Example: backup

Must be one of:
  • totp
  • sms
  • email
  • backup

Regenerate backup codes

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/mfa/backup/regenerate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/mfa/backup/regenerate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/mfa/backup/regenerate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Disable MFA for current user

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/mfa/disable" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"|]|{+-\"
}"
const url = new URL(
    "https://forgefile.com/api/mfa/disable"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "|]|{+-"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mfa/disable

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

password   string     

Example: |]|{+-

Verify MFA code

Example request:
curl --request POST \
    "https://forgefile.com/api/mfa/verify/public" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"architecto\",
    \"method\": \"sms\"
}"
const url = new URL(
    "https://forgefile.com/api/mfa/verify/public"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "architecto",
    "method": "sms"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/mfa/verify/public

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

Example: architecto

method   string  optional    

Example: sms

Must be one of:
  • totp
  • sms
  • email
  • backup

Get enterprise features overview

requires authentication deprecated:This controller has been refactored into smaller, focused controllers: - SSOController - SSO methods (getSSOProviders, initiateSamlSSO, processSamlResponse, initiateOAuthSSO, processOAuthCallback, configureTenantSSO, testSSOConnection, getSSOStatistics) - LDAPController - LDAP methods (testLDAPConnection, authenticateLDAPUser, syncLDAPUsers, getLDAPGroups, getUserLDAPGroups, getLDAPStatistics) - MultiTenancyController - multi-tenancy methods (createTenant, getTenantByDomain, getTenantUsers, addUserToTenant, removeUserFromTenant, getTenantStatistics, updateTenantSettings, suspendTenant, activateTenant, getAllTenants) - EnterpriseReportingController - reporting methods (generateEnterpriseDashboard, generateUserAnalyticsReport, generateUsageAnalyticsReport, generateFinancialReport, generateComplianceReport, generateCustomReport, exportReport) This controller is kept for backward compatibility but should not be used for new code. All methods have been moved to the appropriate specialized controllers. Only overview and rate limit methods (getFeaturesOverview, getRateLimitStatistics) remain here.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/features/overview" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/features/overview"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 24e70cf6-c7e5-4c59-a6ac-5f4177c0c642
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.478152Z",
    "context": {
        "path": "/api/features/overview",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/features/overview

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get available SSO providers

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/sso/providers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/sso/providers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2f23d2ba-d72c-4bb4-8ebf-0cb30ff95cb9
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.483906Z",
    "context": {
        "path": "/api/sso/providers",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/sso/providers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Initiate SAML SSO

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/sso/saml/initiate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"provider\": \"b\"
}"
const url = new URL(
    "https://forgefile.com/api/sso/saml/initiate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "provider": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/sso/saml/initiate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

provider   string  optional    

Must not be greater than 255 characters. Example: b

Get SSO statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/sso/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/sso/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e3d51968-1ba9-4e24-a3eb-71416d576811
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.532884Z",
    "context": {
        "path": "/api/sso/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/sso/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Test LDAP connection

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ldap/test-connection" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ldap/test-connection"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/ldap/test-connection

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Sync users from LDAP

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ldap/sync-users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ldap/sync-users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/ldap/sync-users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get LDAP groups

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ldap/groups" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ldap/groups"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 31c45fb6-a250-45ad-8f6d-891bb3df9eb0
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.542789Z",
    "context": {
        "path": "/api/ldap/groups",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ldap/groups

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user LDAP groups

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ldap/users/architecto/groups" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ldap/users/architecto/groups"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: fe9e5b0d-7c25-48ef-9d2e-dc714d4e52f1
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.545242Z",
    "context": {
        "path": "/api/ldap/users/architecto/groups",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ldap/users/{username}/groups

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

username   string     

Example: architecto

Get LDAP statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ldap/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ldap/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e46f6894-12c9-4bf8-93d5-ad5cb4b1ce5b
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.547370Z",
    "context": {
        "path": "/api/ldap/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ldap/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get tenant by domain

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/tenants/domain/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenants/domain/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: bb7a4e65-9cf2-4345-886f-5ecb7ba91f00
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.559727Z",
    "context": {
        "path": "/api/tenants/domain/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/tenants/domain/{domain}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

domain   string     

The domain. Example: architecto

Get tenant users

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/tenants/architecto/users" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenants/architecto/users"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1ac5d916-62f9-48ff-acce-a1e4f51ca011
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.562860Z",
    "context": {
        "path": "/api/tenants/architecto/users",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/tenants/{tenantId}/users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tenantId   string     

Example: architecto

Remove user from tenant

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/tenants/architecto/users/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenants/architecto/users/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/tenants/{tenantId}/users/{userId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tenantId   string     

Example: architecto

userId   string     

Example: architecto

Get tenant statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/tenants/architecto/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenants/architecto/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0ed87423-37a8-4377-9d46-c2d3b5c8c0dd
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.570781Z",
    "context": {
        "path": "/api/tenants/architecto/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/tenants/{tenantId}/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tenantId   string     

Example: architecto

Suspend tenant

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/tenants/architecto/suspend" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reason\": \"b\"
}"
const url = new URL(
    "https://forgefile.com/api/tenants/architecto/suspend"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reason": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/tenants/{tenantId}/suspend

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tenantId   string     

Example: architecto

Body Parameters

reason   string  optional    

Must not be greater than 500 characters. Example: b

Activate tenant

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/tenants/architecto/activate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenants/architecto/activate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/tenants/{tenantId}/activate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tenantId   string     

Example: architecto

Get all tenants

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/tenants" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenants"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0872a04d-3eac-44a3-908d-43742db7d618
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.578952Z",
    "context": {
        "path": "/api/tenants",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/tenants

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Enterprise analytics dashboard

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a3791540-751e-41a1-ba2a-fb3fd7384072
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.592198Z",
    "context": {
        "path": "/api/analytics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Generate enterprise dashboard

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/reports/dashboard" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/reports/dashboard"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3187cf4b-d454-4b13-b320-134d9d85d37c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.594542Z",
    "context": {
        "path": "/api/reports/dashboard",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/reports/dashboard

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Generate user analytics report

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/reports/user-analytics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/reports/user-analytics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 15d7ade7-7900-42d1-9388-4fc8c2f9a543
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.596582Z",
    "context": {
        "path": "/api/reports/user-analytics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/reports/user-analytics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Generate usage analytics report

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/reports/usage-analytics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/reports/usage-analytics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8cf18959-74c6-413e-88ee-e3109df93f2c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.598618Z",
    "context": {
        "path": "/api/reports/usage-analytics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/reports/usage-analytics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Generate financial report

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/reports/financial" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/reports/financial"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d4711593-fb33-4292-8d1c-47a9c9baa347
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.601282Z",
    "context": {
        "path": "/api/reports/financial",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/reports/financial

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Generate compliance report

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/reports/compliance" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/reports/compliance"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5d4bcb5e-63f8-4a52-9ddd-edc248c1b62f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.603430Z",
    "context": {
        "path": "/api/reports/compliance",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/reports/compliance

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get rate limit statistics

requires authentication deprecated:This controller has been refactored into smaller, focused controllers: - SSOController - SSO methods (getSSOProviders, initiateSamlSSO, processSamlResponse, initiateOAuthSSO, processOAuthCallback, configureTenantSSO, testSSOConnection, getSSOStatistics) - LDAPController - LDAP methods (testLDAPConnection, authenticateLDAPUser, syncLDAPUsers, getLDAPGroups, getUserLDAPGroups, getLDAPStatistics) - MultiTenancyController - multi-tenancy methods (createTenant, getTenantByDomain, getTenantUsers, addUserToTenant, removeUserFromTenant, getTenantStatistics, updateTenantSettings, suspendTenant, activateTenant, getAllTenants) - EnterpriseReportingController - reporting methods (generateEnterpriseDashboard, generateUserAnalyticsReport, generateUsageAnalyticsReport, generateFinancialReport, generateComplianceReport, generateCustomReport, exportReport) This controller is kept for backward compatibility but should not be used for new code. All methods have been moved to the appropriate specialized controllers. Only overview and rate limit methods (getFeaturesOverview, getRateLimitStatistics) remain here.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/rate-limits/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/rate-limits/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e7bef174-19eb-4026-b080-568b32043f34
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.613951Z",
    "context": {
        "path": "/api/rate-limits/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/rate-limits/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Initiate SAML SSO

Example request:
curl --request GET \
    --get "https://forgefile.com/api/sso/saml/initiate" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"provider\": \"b\"
}"
const url = new URL(
    "https://forgefile.com/api/sso/saml/initiate"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "provider": "b"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (400):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-0d983b1ea3f13b4421dae34ad8629f03-b829d7e0207b738a-01
x-trace-id: 0d983b1ea3f13b4421dae34ad8629f03
x-span-id: b829d7e0207b738a
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496162
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 501375e5-69c2-4f53-bd57-2d6d811980ee
set-cookie: forgefile_locale=eyJpdiI6Im5ZYmc3WERhaWZWVDdwQjZLT3V3ZFE9PSIsInZhbHVlIjoiWTVOalRSLytKOGxqNVdWTndScDNHbEordXVDdFZxTzZCT29ZMW04SnZZS3Irb0IvRFR5K05MMmFyTWlIT2VpNCIsIm1hYyI6ImM0ODEwNTZiOGU0Y2EzZDU2YThjODgyNzlkZTBmYTZjNjUxM2VlZTU1YzYwOGEyODU2YjkzNWI1NDUyZWUzOTUiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:22 GMT; Max-Age=31536000; path=/; samesite=lax; XSRF-TOKEN=eyJpdiI6IlZldFBrWHJxc21OY0dXN29wdWRIL2c9PSIsInZhbHVlIjoiRFhmbWVqNndVdW52UHIzODBJMnRxR2FRVkRJa0w0eFlhalFxaFV1WnZNU3FCMHFZYjdhZWI0bmJZNVJ3M1g5djFvcGdxY2ROS094LzFKZ2NHS0FYMHhRcktNUkZNOFNGbWpuMU9UK2U2ZEttZEdGNFIrNkEwR1pGZWRlaCtaQXUiLCJtYWMiOiIzODA0NTJkYTk5ZTNkNzAzYTRkOWM0NmI3YTAzOTRhNGI5NjFmZDJlNmRiYjc5ODRmMDBkMTUyOGEyOWZhMGRhIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:22 GMT; Max-Age=86400; path=/; samesite=lax; forgefile_session=eyJpdiI6Ik5qZWRUMitOZ1d1T2NIbFVYV3lKZUE9PSIsInZhbHVlIjoiaVlzM2V5L0l4OVl6ZWV4azc0SC9uYW5lcTdMSytXMzU3bi9IQ2t5MUlXb3NEMmVSYkhoMEFJMEhzeURHRUpxRnNjbTdPSWhxbUU3MkQ3VTljeWhZRkZuWkZyWFZ6NUtXL1ovbGZMVHltSmY4QnF3MDl3Zk9HSW10dkNIUzdUcGoiLCJtYWMiOiI2OGFmODQ1ZjI5MGNmYjNhNTE2NDlkMGM5OWU2YzRmMTFjMDNiZDYwZmNiMWYxNTFmZjlhYThhMjUxZThkMzg3IiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:22 GMT; Max-Age=86400; path=/; httponly; samesite=lax
 

{
    "success": false,
    "message": "SSO is not enabled"
}
 

Request      

GET api/sso/saml/initiate

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

provider   string  optional    

Must not be greater than 255 characters. Example: b

Generate enterprise dashboard

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/tenant/dashboard" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenant/dashboard"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e991307e-3821-4bdc-bc1e-7b7d8079f12b
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.657957Z",
    "context": {
        "path": "/api/tenant/dashboard",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/tenant/dashboard

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Generate user analytics report

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/tenant/reports/user-analytics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenant/reports/user-analytics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2ef0de87-ece6-49f7-a95c-adf4f08f7e1a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.660420Z",
    "context": {
        "path": "/api/tenant/reports/user-analytics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/tenant/reports/user-analytics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Generate usage analytics report

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/tenant/reports/usage-analytics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenant/reports/usage-analytics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 504945f8-c75e-4cfb-a765-8b4e5e467bde
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.662435Z",
    "context": {
        "path": "/api/tenant/reports/usage-analytics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/tenant/reports/usage-analytics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Generate compliance report

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/tenant/reports/compliance" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/tenant/reports/compliance"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 03a1a4ca-a4d0-4fe6-8aea-fd20bfd1faa0
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.664289Z",
    "context": {
        "path": "/api/tenant/reports/compliance",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/tenant/reports/compliance

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get compliance dashboard

requires authentication deprecated:This controller has been refactored into smaller, focused controllers: - AuditLogController - audit log operations (index, search, export) - DataRetentionController - data retention policies and GDPR operations (index, execute, handleRightToBeForgotten, handleDataPortability) - ConsentController - consent management (record, withdraw, getUserStatus, index, export) - DataClassificationController - data classification (classify, index) - BreachNotificationController - breach reporting (report, index, updateStatus) This controller is kept for backward compatibility but should not be used for new code. All methods have been moved to the appropriate specialized controllers.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/dashboard" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/dashboard"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e68d09b9-5017-4ab9-8259-12c4f371f92f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.694700Z",
    "context": {
        "path": "/api/dashboard",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/dashboard

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get audit logs

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/audit-logs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/audit-logs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 62c80c74-3825-45ba-be46-8b505aa8af7d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.701305Z",
    "context": {
        "path": "/api/audit-logs",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/audit-logs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get data retention policies

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/data-retention/policies" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/data-retention/policies"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2a5a3e42-d5a5-4d28-bbc7-839a1d423f90
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.723435Z",
    "context": {
        "path": "/api/data-retention/policies",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/data-retention/policies

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Execute data retention policy

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/data-retention/policies/architecto/execute" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/data-retention/policies/architecto/execute"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/data-retention/policies/{policyId}/execute

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

policyId   string     

Example: architecto

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/consent/user/architecto/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/consent/user/architecto/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3d579329-f8a5-4f30-9713-ef2f4e4c14ed
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.758385Z",
    "context": {
        "path": "/api/consent/user/architecto/status",
        "method": "GET",
        "user_id": null
    }
}
 

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/consent/records" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/consent/records"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cb9e24bc-9060-4c00-aa75-a9a5e5218624
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.760783Z",
    "context": {
        "path": "/api/consent/records",
        "method": "GET",
        "user_id": null
    }
}
 

Get data classifications

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/data-classification/records" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/data-classification/records"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 96bceed7-2051-43b0-9983-aa6b9fc239a2
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.774927Z",
    "context": {
        "path": "/api/data-classification/records",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/data-classification/records

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get breach notifications

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/breach-notifications" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/breach-notifications"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c31650e6-aabf-4eae-afe6-cea54d4c57ec
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.782743Z",
    "context": {
        "path": "/api/breach-notifications",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/breach-notifications

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/user-consent/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/user-consent/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 440e40c7-2044-4e87-8c2c-f07a51d36c48
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.787182Z",
    "context": {
        "path": "/api/user-consent/status",
        "method": "GET",
        "user_id": null
    }
}
 

Create file (Command) POST /api/v1/cqrs/files

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/cqrs/commands/files" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs/commands/files"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/cqrs/commands/files

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update file (Command) PUT /api/v1/commands/files/{id}

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/cqrs/commands/files/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs/commands/files/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/v1/cqrs/commands/files/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the file. Example: 564

Delete file (Command) DELETE /api/v1/commands/files/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/cqrs/commands/files/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs/commands/files/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/cqrs/commands/files/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the file. Example: 564

Process file (Command) POST /api/v1/commands/files/{id}/process

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/cqrs/commands/files/564/process" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs/commands/files/564/process"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/cqrs/commands/files/{id}/process

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the file. Example: 564

Get user files (Query) GET /api/v1/cqrs/files

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/cqrs/queries/files" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs/queries/files"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2bf31bf9-b564-4f2b-b885-e8e3d6dca4f8
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.821808Z",
    "context": {
        "path": "/api/v1/cqrs/queries/files",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/cqrs/queries/files

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get file by ID (Query) GET /api/v1/queries/files/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/cqrs/queries/files/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs/queries/files/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e1a3d801-2bba-416d-adcf-53fdbb2281d7
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.823796Z",
    "context": {
        "path": "/api/v1/cqrs/queries/files/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/cqrs/queries/files/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the file. Example: 564

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/cqrs/queries/files/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs/queries/files/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 27b9597f-578a-4276-acdc-f61865500a34
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.825578Z",
    "context": {
        "path": "/api/v1/cqrs/queries/files/search",
        "method": "GET",
        "user_id": null
    }
}
 

Get files by status (Query) GET /api/v1/queries/files/status/{status}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/cqrs/queries/files/status/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs/queries/files/status/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b25f0a7d-4c83-431e-a84c-bdf61723a6a5
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.827696Z",
    "context": {
        "path": "/api/v1/cqrs/queries/files/status/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/cqrs/queries/files/status/{status}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

status   string     

The status. Example: architecto

CQRS Health Check GET /api/v1/cqrs/health

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/cqrs/health" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs/health"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: bc2a3993-8df5-4bad-bab2-a013bb434e19
 

{
    "status": "healthy",
    "service": "CQRS File Service",
    "timestamp": "2026-09-04T04:28:22.829637Z",
    "correlation_id": null,
    "capabilities": {
        "commands": {
            "CreateFileCommand": "Create new file records",
            "UpdateFileCommand": "Update existing file metadata",
            "DeleteFileCommand": "Delete files (soft or force)",
            "ProcessFileCommand": "Start file processing tasks"
        },
        "queries": {
            "GetUserFilesQuery": "Retrieve user files",
            "GetFileByIdQuery": "Get specific file by ID",
            "SearchFilesQuery": "Search files with filters",
            "GetFilesByStatusQuery": "Get files by processing status"
        }
    },
    "observability": {
        "active_operations": 0,
        "memory_usage_mb": 99,
        "peak_memory_usage_mb": 99,
        "uptime_seconds": 3,
        "correlation_id": null,
        "active_timers": 0,
        "context": []
    }
}
 

Request      

GET api/v1/cqrs/health

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create file (Command) POST /api/v1/cqrs/files

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/cqrs-files" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs-files"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/cqrs-files

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update file (Command) PUT /api/v1/commands/files/{id}

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/cqrs-files/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs-files/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/v1/cqrs-files/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the cqrs file. Example: 564

Delete file (Command) DELETE /api/v1/commands/files/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/cqrs-files/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs-files/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/cqrs-files/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the cqrs file. Example: 564

Process file (Command) POST /api/v1/commands/files/{id}/process

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/cqrs-files/564/process" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs-files/564/process"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/cqrs-files/{id}/process

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the cqrs file. Example: 564

Get user files (Query) GET /api/v1/cqrs/files

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/cqrs-files" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs-files"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b523ffec-7867-46b7-a142-241c65d8fb7a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.833685Z",
    "context": {
        "path": "/api/v1/cqrs-files",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/cqrs-files

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get file by ID (Query) GET /api/v1/queries/files/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/cqrs-files/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs-files/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5e022315-8c30-40cb-acdc-f24a2b9731bd
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.835341Z",
    "context": {
        "path": "/api/v1/cqrs-files/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/cqrs-files/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the cqrs file. Example: 564

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/cqrs-files/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs-files/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2d1b5726-8cbb-4207-8bfb-f2b7ea9e1b7e
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.836865Z",
    "context": {
        "path": "/api/v1/cqrs-files/search",
        "method": "GET",
        "user_id": null
    }
}
 

Get files by status (Query) GET /api/v1/queries/files/status/{status}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/cqrs-files/status/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/cqrs-files/status/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 26de98ce-d058-4be4-ad75-edd9751a96d6
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.839140Z",
    "context": {
        "path": "/api/v1/cqrs-files/status/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/cqrs-files/status/{status}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

status   string     

The status. Example: architecto

Get list of all API versions

Example request:
curl --request GET \
    --get "https://forgefile.com/api/versions" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/versions"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-dda8134e8afb8e5fa121016a439bfa97-b5b7f2c5b5eccf70-01
x-trace-id: dda8134e8afb8e5fa121016a439bfa97
x-span-id: b5b7f2c5b5eccf70
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496162
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e57651a6-5e01-4d1c-9ac1-d449c30ad063
 

{
    "versions": [
        {
            "version": "2023-06-01",
            "status": "deprecated",
            "released_at": "2023-06-01",
            "deprecated_at": "2024-01-01",
            "removed_at": "2024-07-01",
            "features": [
                "basic_crud_operations",
                "simple_pagination",
                "basic_authentication"
            ],
            "default": false
        },
        {
            "version": "2023-12-01",
            "status": "supported",
            "released_at": "2023-12-01",
            "deprecated_at": null,
            "removed_at": null,
            "features": [
                "enhanced_filtering",
                "bulk_operations",
                "advanced_validation",
                "rate_limiting"
            ],
            "default": false
        },
        {
            "version": "2024-01-01",
            "status": "default",
            "released_at": "2024-01-01",
            "deprecated_at": null,
            "removed_at": null,
            "features": [
                "advanced_search",
                "webhook_integrations",
                "real_time_updates",
                "api_gateway_routing",
                "distributed_tracing",
                "event_streaming",
                "service_discovery"
            ],
            "default": true
        }
    ],
    "default_version": "2024-01-01",
    "supported_count": 3,
    "deprecated_count": 1,
    "_links": {
        "self": {
            "href": "https://forgefile.com/api/versions"
        },
        "default": {
            "href": "https://forgefile.com/api/versions/2024-01-01"
        }
    }
}
 

Request      

GET api/versions

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Test version negotiation

Example request:
curl --request GET \
    --get "https://forgefile.com/api/versions/negotiate" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/versions/negotiate"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-e9ed183f2728e6d732ba7f2a7f7e0c21-3a36658df24e30d5-01
x-trace-id: e9ed183f2728e6d732ba7f2a7f7e0c21
x-span-id: 3a36658df24e30d5
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496162
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e9b52c65-d66c-4e71-9f1b-f8a2875de6be
 

{
    "negotiation_result": {
        "requested_version": null,
        "negotiated_version": "2024-01-01",
        "supported": true,
        "deprecated": false,
        "default_fallback": false
    },
    "version_info": {
        "version": "2024-01-01",
        "released_at": "2024-01-01",
        "features": [
            "advanced_search",
            "webhook_integrations",
            "real_time_updates",
            "api_gateway_routing",
            "distributed_tracing",
            "event_streaming",
            "service_discovery"
        ]
    },
    "request_info": {
        "headers": {
            "x-api-version": null,
            "accept": "application/json"
        },
        "path": "/api/versions/negotiate"
    }
}
 

Request      

GET api/versions/negotiate

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get version usage statistics

Example request:
curl --request GET \
    --get "https://forgefile.com/api/versions/statistics" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/versions/statistics"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-2b68201ffb5a35a97083fae326d6f66f-49bd5459f63b5252-01
x-trace-id: 2b68201ffb5a35a97083fae326d6f66f
x-span-id: 49bd5459f63b5252
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496162
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e6d2c3b5-3a7f-4408-bab4-44bcf2a9101b
 

{
    "statistics": {
        "period": "24h",
        "total_requests": 0,
        "deprecated_requests": 0,
        "deprecation_rate": 0,
        "versions": [
            {
                "version": "2023-06-01",
                "supported": true,
                "deprecated": true,
                "released_at": "2023-06-01",
                "deprecated_at": "2024-01-01",
                "removed_at": "2024-07-01",
                "requests": 0,
                "deprecated_requests": 0
            },
            {
                "version": "2023-12-01",
                "supported": true,
                "deprecated": false,
                "released_at": "2023-12-01",
                "deprecated_at": null,
                "removed_at": null,
                "requests": 0,
                "deprecated_requests": 0
            },
            {
                "version": "2024-01-01",
                "supported": true,
                "deprecated": false,
                "released_at": "2024-01-01",
                "deprecated_at": null,
                "removed_at": null,
                "requests": 0,
                "deprecated_requests": 0
            }
        ]
    },
    "generated_at": "2026-09-04T04:28:22.861655Z",
    "_links": {
        "self": {
            "href": "https://forgefile.com/api/versions/statistics"
        },
        "versions": {
            "href": "https://forgefile.com/api/versions"
        }
    }
}
 

Request      

GET api/versions/statistics

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get information about specific version

Example request:
curl --request GET \
    --get "https://forgefile.com/api/versions/564" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/versions/564"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-c8c03b050834b733adaa42893630a666-7b8a4a17c42fd7fe-01
x-trace-id: c8c03b050834b733adaa42893630a666
x-span-id: 7b8a4a17c42fd7fe
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496162
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e022c531-6522-4543-b287-5133c72f18fc
 

{
    "error": "Version not found",
    "version": "564",
    "available_versions": [
        "2023-06-01",
        "2023-12-01",
        "2024-01-01"
    ]
}
 

Request      

GET api/versions/{id}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the version. Example: 564

Get migration guide between versions

Example request:
curl --request GET \
    --get "https://forgefile.com/api/migration/-33/to/-33" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/migration/-33/to/-33"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (400):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-4da23dee5eb821d1683ecd71528bedd9-6a6be584e688a974-01
x-trace-id: 4da23dee5eb821d1683ecd71528bedd9
x-span-id: 6a6be584e688a974
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496162
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9d56e88e-4318-411d-bab0-031110285afc
 

{
    "error": "Source version not supported",
    "version": "-33"
}
 

Request      

GET api/migration/{fromVersion}/to/{toVersion}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fromVersion   string     

Example: -33

toVersion   string     

Example: -33

Handle all API gateway requests

Example request:
curl --request GET \
    --get "https://forgefile.com/api/gateway/1m0/1m0y5p" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/gateway/1m0/1m0y5p"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
x-correlation-id: req_6a9a48e6d9d289.70738668
x-request-id: 4736d572-274b-4ea5-86ed-95bef7b2a0ab
x-gateway-error: true
cache-control: no-cache, private
content-type: application/json
traceparent: 00-20b3a049324f9fe102fa29d9e249fed6-4a2445886d4381d5-01
x-trace-id: 20b3a049324f9fe102fa29d9e249fed6
x-span-id: 4a2445886d4381d5
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496162
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
 

{
    "error": {
        "type": "internal_error",
        "message": "An internal error occurred",
        "correlation_id": "req_6a9a48e6d9d289.70738668",
        "request_id": "gw_6a9a48e6d9d2d8.82962712",
        "debug": {
            "exception": "Error",
            "file": "/Users/antonkara/Work/forgefile/app/Http/Middleware/ApiGatewayMiddleware.php",
            "line": 153,
            "trace": [
                "#0 /Users/antonkara/Work/forgefile/app/Http/Middleware/ApiGatewayMiddleware.php(54): App\\Http\\Middleware\\ApiGatewayMiddleware->postProcessResponse(Object(Illuminate\\Http\\Request), Object(Illuminate\\Http\\JsonResponse), 0.00071215629577637)",
                "#1 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\ApiGatewayMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#2 /Users/antonkara/Work/forgefile/app/Http/Middleware/TracingMiddleware.php(53): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#3 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\TracingMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#4 /Users/antonkara/Work/forgefile/app/Http/Middleware/ApiRateLimitMiddleware.php(66): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#5 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\ApiRateLimitMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#6 /Users/antonkara/Work/forgefile/app/Http/Middleware/ApiVersioningMiddleware.php(52): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#7 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\ApiVersioningMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#8 /Users/antonkara/Work/forgefile/app/Http/Middleware/SetApiLocale.php(23): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#9 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\SetApiLocale->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#10 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#11 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#12 /Users/antonkara/Work/forgefile/vendor/laravel/sanctum/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#13 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful->Laravel\\Sanctum\\Http\\Middleware\\{closure}(Object(Illuminate\\Http\\Request))",
                "#14 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#15 /Users/antonkara/Work/forgefile/vendor/laravel/sanctum/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php(25): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))",
                "#16 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#17 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#18 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Routing/Router.php(821): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))",
                "#19 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Routing/Router.php(800): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))",
                "#20 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Routing/Router.php(764): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))",
                "#21 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Routing/Router.php(753): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))",
                "#22 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))",
                "#23 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))",
                "#24 /Users/antonkara/Work/forgefile/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#25 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Livewire\\Features\\SupportDisablingBackButtonCache\\DisableBackButtonCacheMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#26 /Users/antonkara/Work/forgefile/app/Http/Middleware/RecordBandwidth.php(28): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#27 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\RecordBandwidth->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#28 /Users/antonkara/Work/forgefile/app/Http/Middleware/DdosProtectionMiddleware.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#29 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\DdosProtectionMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'when-enabled')",
                "#30 /Users/antonkara/Work/forgefile/app/Http/Middleware/SecurityHeadersMiddleware.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#31 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\SecurityHeadersMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#32 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#33 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#34 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#35 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#36 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(51): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#37 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#38 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#39 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#40 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(109): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#41 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#42 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(74): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#43 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#44 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(58): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#45 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#46 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/InvokeDeferredCallbacks.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#47 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Foundation\\Http\\Middleware\\InvokeDeferredCallbacks->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#48 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePathEncoding.php(26): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#49 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): Illuminate\\Http\\Middleware\\ValidatePathEncoding->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#50 /Users/antonkara/Work/forgefile/app/Http/Middleware/CorrelationId.php(22): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#51 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(219): App\\Http\\Middleware\\CorrelationId->handle(Object(Illuminate\\Http\\Request), Object(Closure))",
                "#52 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(137): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
                "#53 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))",
                "#54 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))",
                "#55 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php(236): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))",
                "#56 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php(229): Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls->callLaravelRoute(Object(Illuminate\\Http\\Request))",
                "#57 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php(103): Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls->makeApiCall(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))",
                "#58 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php(39): Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls->makeResponseCall(Object(Knuckles\\Camel\\Extraction\\ExtractedEndpointData), Array)",
                "#59 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php(471): Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls->__invoke(Object(Knuckles\\Camel\\Extraction\\ExtractedEndpointData), Array)",
                "#60 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php(397): Knuckles\\Scribe\\Extracting\\Extractor->iterateThroughStrategies('responses', Object(Knuckles\\Camel\\Extraction\\ExtractedEndpointData), Array, Object(Closure))",
                "#61 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php(94): Knuckles\\Scribe\\Extracting\\Extractor->fetchResponses(Object(Knuckles\\Camel\\Extraction\\ExtractedEndpointData), Array)",
                "#62 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php(186): Knuckles\\Scribe\\Extracting\\Extractor->processRoute(Object(Illuminate\\Routing\\Route), Array)",
                "#63 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php(41): Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp->Knuckles\\Scribe\\GroupedEndpoints\\{closure}()",
                "#64 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php(59): Illuminate\\Console\\View\\Components\\Task->render('<options=bold>[...', Object(Closure))",
                "#65 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php(183): Illuminate\\Console\\View\\Components\\Factory->__call('task', Array)",
                "#66 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php(73): Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp->extractEndpointsInfoFromLaravelApp(Array, Array, Array)",
                "#67 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php(51): Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp->extractEndpointsInfoAndWriteToDisk(Object(Knuckles\\Scribe\\Matching\\RouteMatcher), true)",
                "#68 /Users/antonkara/Work/forgefile/vendor/knuckleswtf/scribe/src/Commands/GenerateDocumentation.php(55): Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp->get()",
                "#69 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Knuckles\\Scribe\\Commands\\GenerateDocumentation->handle(Object(Knuckles\\Scribe\\Matching\\RouteMatcher), Object(Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFactory))",
                "#70 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()",
                "#71 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))",
                "#72 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))",
                "#73 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)",
                "#74 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)",
                "#75 /Users/antonkara/Work/forgefile/vendor/symfony/console/Command/Command.php(341): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))",
                "#76 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))",
                "#77 /Users/antonkara/Work/forgefile/vendor/symfony/console/Application.php(1117): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))",
                "#78 /Users/antonkara/Work/forgefile/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Knuckles\\Scribe\\Commands\\GenerateDocumentation), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))",
                "#79 /Users/antonkara/Work/forgefile/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))",
                "#80 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))",
                "#81 /Users/antonkara/Work/forgefile/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))",
                "#82 /Users/antonkara/Work/forgefile/artisan(16): Illuminate\\Foundation\\Application->handleCommand(Object(Symfony\\Component\\Console\\Input\\ArgvInput))",
                "#83 {main}"
            ]
        }
    },
    "_gateway": {
        "error_at": "2026-09-04T04:28:22.893176Z",
        "processing_time_ms": 0.88
    }
}
 

Request      

GET api/gateway/{service}/{action?}

POST api/gateway/{service}/{action?}

PUT api/gateway/{service}/{action?}

PATCH api/gateway/{service}/{action?}

DELETE api/gateway/{service}/{action?}

OPTIONS api/gateway/{service}/{action?}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

service   string     

Example: 1m0

action   string  optional    

Example: 1m0y5p

Get app configuration.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/mobile/config" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/mobile/config"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-011e573735cf66af9f895dba2304d161-34e6fa7eab56df2d-01
x-trace-id: 011e573735cf66af9f895dba2304d161
x-span-id: 34e6fa7eab56df2d
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496162
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d182914b-9b55-4f11-98ce-b1cde8506823
 

{
    "success": true,
    "message": "Success",
    "data": {
        "app": {
            "name": "ForgeFile",
            "version": "1.0.0",
            "environment": "local"
        },
        "features": {
            "file_upload": true,
            "file_processing": true,
            "notifications": true,
            "team_collaboration": false,
            "api_integrations": true
        },
        "limits": {
            "max_file_size": 52428800,
            "max_files_per_user": 1000,
            "supported_formats": []
        },
        "api": {
            "base_url": "https://forgefile.com/api/mobile",
            "version": "v1",
            "rate_limit": 1000
        }
    }
}
 

Request      

GET api/mobile/config

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user profile.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/mobile/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/mobile/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 62d36794-20f4-4bda-b8f3-92559cadb82e
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.933105Z",
    "context": {
        "path": "/api/mobile/profile",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/mobile/profile

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update user profile.

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/mobile/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "name=b"\
    --form "[email protected]"\
    --form "phone=iyvdljnikhwaykcm"\
    --form "language=ja"\
    --form "timezone=America/St_Lucia"\
    --form "avatar=@/private/var/folders/27/1ybyjfdn7yj5rcjl64hn4cvc0000gn/T/phpKdQwMr" 
const url = new URL(
    "https://forgefile.com/api/mobile/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('name', 'b');
body.append('email', '[email protected]');
body.append('phone', 'iyvdljnikhwaykcm');
body.append('language', 'ja');
body.append('timezone', 'America/St_Lucia');
body.append('avatar', document.querySelector('input[name="avatar"]').files[0]);

fetch(url, {
    method: "PUT",
    headers,
    body,
}).then(response => response.json());

Request      

PUT api/mobile/profile

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: [email protected]

phone   string  optional    

Must not be greater than 20 characters. Example: iyvdljnikhwaykcm

language   string  optional    

Example: ja

Must be one of:
  • en
  • ru
  • es
  • fr
  • de
  • it
  • pt
  • ja
  • ko
  • zh
timezone   string  optional    

Must not be greater than 50 characters. Example: America/St_Lucia

avatar   file  optional    

Must be an image. Must not be greater than 2048 kilobytes. Example: /private/var/folders/27/1ybyjfdn7yj5rcjl64hn4cvc0000gn/T/phpKdQwMr

Get user files.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/mobile/files" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"page\": 16,
    \"per_page\": 22,
    \"type\": \"document\",
    \"status\": \"all\",
    \"search\": \"g\",
    \"sort\": \"type\",
    \"order\": \"desc\"
}"
const url = new URL(
    "https://forgefile.com/api/mobile/files"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "page": 16,
    "per_page": 22,
    "type": "document",
    "status": "all",
    "search": "g",
    "sort": "type",
    "order": "desc"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1e9f3525-ee67-47a3-9f0f-5754b57b9f9c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.972048Z",
    "context": {
        "path": "/api/mobile/files",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/mobile/files

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

page   integer  optional    

Must be at least 1. Example: 16

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 22

type   string  optional    

Example: document

Must be one of:
  • all
  • image
  • video
  • audio
  • document
  • archive
status   string  optional    

Example: all

Must be one of:
  • all
  • processing
  • completed
  • failed
search   string  optional    

Must not be greater than 255 characters. Example: g

sort   string  optional    

Example: type

Must be one of:
  • created_at
  • name
  • size
  • type
order   string  optional    

Example: desc

Must be one of:
  • asc
  • desc

Get notifications.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/mobile/notifications" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"page\": 16,
    \"per_page\": 22,
    \"unread_only\": true,
    \"type\": \"g\"
}"
const url = new URL(
    "https://forgefile.com/api/mobile/notifications"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "page": 16,
    "per_page": 22,
    "unread_only": true,
    "type": "g"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 47ac8809-2197-4d02-afa4-d4fe100328e6
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.978534Z",
    "context": {
        "path": "/api/mobile/notifications",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/mobile/notifications

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

page   integer  optional    

Must be at least 1. Example: 16

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 22

unread_only   boolean  optional    

Example: true

type   string  optional    

Must not be greater than 50 characters. Example: g

Get app statistics.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/mobile/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/mobile/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0f003679-d786-44db-ab84-363f44305328
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.982133Z",
    "context": {
        "path": "/api/mobile/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/mobile/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/admin/users/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/admin/users/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ee6b7373-a3ec-4189-8fef-b4864752458f
set-cookie: forgefile_session=eyJpdiI6InVJRllqTFMrS2dVV1hYMGpvNitrUmc9PSIsInZhbHVlIjoieVBRSVpDeTdRWE11V3RmdmxGc2xPbHJBTnZzS2dCdGRIRDgrRjN5aEJ0Uk11QmFPTXNjTFZhWXFiQWxtUVNNSkVVK2x3SEJFNnJiZHdiaTNsWm9uRWpmVGlyelpPQ0NqZVd1ckJsdUFLTEFPNkVNRk11TzU5QTBjNTdDbUdvTG4iLCJtYWMiOiI3NjM5YzQ4OTZhOTE5YTJkYmZhZWMwMmEwNWRkOWVjMTJkYjMxMGUzZTllNDU2NzQ4NjA1MzNjMWFhMzNhMWZkIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:22 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6Ii9IVnA1V0RKYmYzRDdUbXRLOFl5cGc9PSIsInZhbHVlIjoiWjJGRUlESGVDejBYdVZSSm5NdkdhWUpZS1YzV28xZy8ya0hzTjhYTTFpUjhWOEx5K3NYejk2V2VWdFVwcHNyYSIsIm1hYyI6IjFhZDRhMzYyYzliYzk2MTY5MzM4YTQ2Y2ZjYmNiM2UxZmQ5MjE0OTdjOTkwMTFlMDQ1ZjkzMjE5ZDUzMTFiZGQiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:22 GMT; Max-Age=31536000; path=/; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:22.991110Z",
    "context": {
        "path": "/api/admin/users/search",
        "method": "GET",
        "user_id": null
    }
}
 

Get available integrations.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/integrations" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/integrations"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-9d33d1d2dde50eb84bd0487089560b72-4981b373e83c499b-01
x-trace-id: 9d33d1d2dde50eb84bd0487089560b72
x-span-id: 4981b373e83c499b
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c1ad94fd-3742-49da-b9a1-2cae0e4c7bd8
 

{
    "success": true,
    "message": "Integrations retrieved successfully",
    "data": {
        "slack": {
            "name": "Slack",
            "description": "Send notifications to Slack channels",
            "icon": "slack",
            "enabled": true
        },
        "discord": {
            "name": "Discord",
            "description": "Send notifications to Discord channels",
            "icon": "discord",
            "enabled": true
        },
        "webhook": {
            "name": "Webhook",
            "description": "Send data to custom webhook endpoints",
            "icon": "webhook",
            "enabled": true
        },
        "zapier": {
            "name": "Zapier",
            "description": "Connect with Zapier automation platform",
            "icon": "zapier",
            "enabled": true
        },
        "ifttt": {
            "name": "IFTTT",
            "description": "Connect with If This Then That platform",
            "icon": "ifttt",
            "enabled": true
        }
    }
}
 

Request      

GET api/integrations

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get API documentation.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/integrations/docs" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/integrations/docs"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-b24871ecd65a387d7c2507afd23c4412-2d9ba214bdb3c827-01
x-trace-id: b24871ecd65a387d7c2507afd23c4412
x-span-id: 2d9ba214bdb3c827
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c7123109-642e-4a03-b20d-b99b021ed636
 

{
    "success": true,
    "message": "API documentation retrieved successfully",
    "data": {
        "title": "ForgeFile Integration API",
        "version": "1.0.0",
        "base_url": "https://forgefile.com/api/integrations",
        "authentication": {
            "type": "Bearer Token",
            "description": "Include your API token in the Authorization header"
        },
        "endpoints": {
            "GET /integrations": "List user integrations",
            "POST /integrations": "Create new integration",
            "GET /integrations/{id}": "Get integration details",
            "PUT /integrations/{id}": "Update integration",
            "DELETE /integrations/{id}": "Delete integration",
            "POST /integrations/{id}/test": "Test integration"
        },
        "webhooks": {
            "file.uploaded": "Triggered when a file is uploaded",
            "file.processed": "Triggered when file processing is complete",
            "file.failed": "Triggered when file processing fails",
            "user.registered": "Triggered when a new user registers",
            "payment.completed": "Triggered when a payment is completed"
        }
    }
}
 

Request      

GET api/integrations/docs

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's integrations.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/integrations/user" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/integrations/user"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9d16d815-67e7-4a4b-a480-0635956bd5de
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.013397Z",
    "context": {
        "path": "/api/integrations/user",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/integrations/user

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's webhooks.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/webhooks" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/webhooks"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3fc51e05-832e-470c-b69e-0a9ab7675a5d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.015813Z",
    "context": {
        "path": "/api/webhooks",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/webhooks

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Proxy Core Web Vitals beacon to CMS

Example request:
curl --request POST \
    "https://forgefile.com/api/seo/cwv-beacon" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/seo/cwv-beacon"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/seo/cwv-beacon

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Best-effort beacon: a login/register form was left without being submitted. Never fails the client — funnel telemetry only.

Example request:
curl --request POST \
    "https://forgefile.com/api/auth/abandon-beacon" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/auth/abandon-beacon"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/auth/abandon-beacon

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/health

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/health" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/health"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-6b6dd272942aebbe1c9c843b04b1d956-fffafeb6db38b20e-01
x-trace-id: 6b6dd272942aebbe1c9c843b04b1d956
x-span-id: fffafeb6db38b20e
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: be6c7005-807f-4d03-9693-484954f90ca7
 

{
    "status": "ok"
}
 

Request      

GET api/v1/health

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/docs

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/docs" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/docs"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-703b20bf3be13aea145e9cf351b03c71-10bbbd3fc8791349-01
x-trace-id: 703b20bf3be13aea145e9cf351b03c71
x-span-id: 10bbbd3fc8791349
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cac5e732-3de5-4718-8fdc-12fd9e59da76
 

{
    "docs": true
}
 

Request      

GET api/v1/docs

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/status

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/status" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/status"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-14e4fb478a4319320bd5aebc3a3d1cd7-8e2a443d6ef146ff-01
x-trace-id: 14e4fb478a4319320bd5aebc3a3d1cd7
x-span-id: 8e2a443d6ef146ff
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7c676d9f-91e9-4c1f-a8cb-4481014f7b6e
 

{
    "status": "ok"
}
 

Request      

GET api/v1/status

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/metrics

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/metrics" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/metrics"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-49ed781a5c16133c1ab2eda9d9c281f1-f6ff8d6a28d52f45-01
x-trace-id: 49ed781a5c16133c1ab2eda9d9c281f1
x-span-id: f6ff8d6a28d52f45
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 00b78c6a-74ed-466b-88cb-acffce211c2d
 

{
    "metrics": true
}
 

Request      

GET api/v1/metrics

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/ping

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ping" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ping"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-1d6bc8bb7eaebbf47f7f6312f3e788f4-9fd9be27b9596ca0-01
x-trace-id: 1d6bc8bb7eaebbf47f7f6312f3e788f4
x-span-id: 9fd9be27b9596ca0
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 717257e0-74eb-4287-9854-33904797f2c2
 

{
    "pong": true
}
 

Request      

GET api/v1/ping

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/integrations/cloud

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/cloud" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/cloud"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-2c206dc8e44a7d5a6739e899826bd881-5085985928dfad6e-01
x-trace-id: 2c206dc8e44a7d5a6739e899826bd881
x-span-id: 5085985928dfad6e
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cb7feb23-6b10-40d4-9d9b-3d05d24a92c2
 

{
    "integrations": {
        "google_drive": true,
        "dropbox": true,
        "onedrive": true
    }
}
 

Request      

GET api/v1/integrations/cloud

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Facebook Deauthorize callback.

Route: POST /v1/webhooks/facebook/deauthorize

FB posts a signed_request: base64url(HMAC-SHA256(payload)) + "." + base64url(payload). We verify the signature before processing any user data.

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/webhooks/facebook/deauthorize" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/webhooks/facebook/deauthorize"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/webhooks/facebook/deauthorize

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

API endpoint for getting CMS page content

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/public/page/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/public/page/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-e273c18d7314a00c96346de26a333ec4-38ea6ebbc3fff14f-01
x-trace-id: e273c18d7314a00c96346de26a333ec4
x-span-id: 38ea6ebbc3fff14f
x-sampled: true
x-ratelimit-limit: 10
x-ratelimit-remaining: 8
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1c1be877-bc2e-4de7-a895-397d6d78ef63
 

{
    "success": false,
    "message": "cURL error 7: Failed to connect to localhost port 8001 after 0 ms: Could not connect to server (see https://curl.se/libcurl/c/libcurl-errors.html) for http://localhost:8001/api/pages/en-us/architecto"
}
 

Request      

GET api/v1/public/page/{slug}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The slug of the page. Example: architecto

Show available plans.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/public/subscription/plans" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/public/subscription/plans"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-55b4b092cd1c81be5d76011ef5e857db-f68694b8048dea13-01
x-trace-id: 55b4b092cd1c81be5d76011ef5e857db
x-span-id: f68694b8048dea13
x-sampled: true
x-ratelimit-limit: 10
x-ratelimit-remaining: 8
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2661e03d-58e3-4322-86c5-34fd18f71892
 

{
    "success": false,
    "error_code": "internal_server_error",
    "message": "Something went wrong on our side. Please try again, and contact support if the problem persists.",
    "timestamp": "2026-09-04T04:28:23.249942Z",
    "context": {
        "path": "/api/v1/public/subscription/plans",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/public/subscription/plans

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/public/features

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/public/features" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/public/features"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-85bc83cd37abfff05d8eb2367a4682e1-2bb05894fc928dfc-01
x-trace-id: 85bc83cd37abfff05d8eb2367a4682e1
x-span-id: 2bb05894fc928dfc
x-sampled: true
x-ratelimit-limit: 10
x-ratelimit-remaining: 8
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4018f022-ca6f-4512-a3ed-2819a0ba3dbd
 

{
    "success": true,
    "message": "Success",
    "data": {
        "features": {
            "translation": {
                "enabled": true,
                "name": "Translation",
                "description": "Translate documents and text between different languages",
                "icon": "translate",
                "allowed_formats": [
                    "txt",
                    "csv",
                    "md",
                    "yml",
                    "yaml"
                ],
                "fields": {
                    "source_language": {
                        "type": "select",
                        "label": "Source Language",
                        "required": true,
                        "options": {
                            "auto": "Auto",
                            "en": "English",
                            "ru": "Russian"
                        },
                        "default": "auto"
                    },
                    "target_language": {
                        "type": "select",
                        "label": "Target Language",
                        "required": true,
                        "options": {
                            "en": "English",
                            "ru": "Russian",
                            "es": "Spanish",
                            "fr": "French",
                            "de": "German",
                            "it": "Italian",
                            "pt": "Portuguese",
                            "ja": "Japanese",
                            "ko": "Korean",
                            "zh": "Chinese"
                        },
                        "default": "en"
                    },
                    "preserve_formatting": {
                        "type": "boolean",
                        "label": "Preserve Formatting",
                        "required": false,
                        "default": true
                    }
                },
                "limits": {
                    "max_file_size": 10485760,
                    "max_concurrent_files": 1,
                    "processing_priority": "standard"
                },
                "cost_per_page": 2
            },
            "transcription": {
                "enabled": true,
                "name": "Transcription",
                "description": "Convert audio and video files to text",
                "icon": "mic",
                "fields": {
                    "language": {
                        "type": "select",
                        "label": "Language",
                        "required": true,
                        "options": {
                            "auto": "Auto",
                            "en": "English",
                            "es": "Spanish",
                            "fr": "French",
                            "de": "German",
                            "ru": "Russian"
                        },
                        "default": "auto"
                    },
                    "provider": {
                        "type": "select",
                        "label": "Provider",
                        "required": false,
                        "options": [
                            "whisper"
                        ],
                        "default": "whisper"
                    },
                    "speaker_detection": {
                        "type": "boolean",
                        "label": "Speaker Detection",
                        "required": false,
                        "default": false
                    },
                    "punctuation": {
                        "type": "boolean",
                        "label": "Add Punctuation",
                        "required": false,
                        "default": true
                    }
                },
                "limits": {
                    "max_file_duration_minutes": 10
                },
                "providers": [
                    "whisper"
                ],
                "cost_per_minute": 1
            },
            "summarization": {
                "enabled": false,
                "name": "Summarization",
                "description": "Create concise summaries of long documents",
                "icon": "summarize",
                "fields": [],
                "limits": [],
                "cost_per_page": 0
            },
            "rewrite": {
                "enabled": false,
                "name": "Rewrite",
                "description": "Rewrite and improve text content",
                "icon": "pencil",
                "fields": [],
                "limits": {
                    "max_file_size": 10485760
                },
                "cost_per_page": 1
            },
            "conversion": {
                "enabled": true,
                "name": "Document Conversion",
                "description": "Convert documents between different formats",
                "icon": "document-convert",
                "fields": {
                    "target_format": {
                        "type": "select",
                        "label": "Target Format",
                        "required": true,
                        "options": {
                            "pdf": "PDF",
                            "docx": "DOCX",
                            "txt": "TXT"
                        },
                        "default": "pdf"
                    },
                    "quality": {
                        "type": "select",
                        "label": "Quality",
                        "required": false,
                        "options": [
                            "standard",
                            "high"
                        ],
                        "default": "standard"
                    }
                },
                "limits": {
                    "max_file_size": 20971520
                },
                "cost_per_file": 2
            },
            "ocr": {
                "enabled": false,
                "name": "OCR (Text Recognition)",
                "description": "Extract text from images and scanned documents",
                "icon": "document-text",
                "fields": [],
                "limits": []
            },
            "compression": {
                "enabled": false,
                "name": "Compression",
                "description": "File compression feature",
                "icon": "compress",
                "fields": [],
                "limits": [],
                "cost_per_file": 0
            },
            "format_conversion": {
                "enabled": true,
                "name": "Format Conversion",
                "description": "Convert images and documents between formats",
                "icon": "file-convert",
                "fields": {
                    "target_format": {
                        "type": "select",
                        "label": "Target Format",
                        "required": true,
                        "options": {
                            "pdf": "PDF",
                            "docx": "DOCX",
                            "txt": "TXT"
                        },
                        "default": "pdf"
                    },
                    "resolution": {
                        "type": "select",
                        "label": "Resolution",
                        "required": false,
                        "options": {
                            "original": "Original",
                            "hd": "HD",
                            "fullhd": "FullHD"
                        },
                        "default": "hd"
                    }
                },
                "limits": {
                    "max_file_size": 52428800
                },
                "cost_per_file": 3
            }
        },
        "user_plan": {
            "name": "Free",
            "code": "free",
            "price": 0,
            "features": []
        },
        "plan_restrictions": {
            "current_plan": "free",
            "plan_name": "Free",
            "upgrade_suggestions": {
                "starter": "Upgrade to Starter for more features",
                "pro": "Upgrade to Pro for unlimited access"
            }
        },
        "locale": "en"
    }
}
 

Request      

GET api/v1/public/features

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get supported translation formats.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/public/translation/supported-formats" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/public/translation/supported-formats"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-77004c937b44722e75fa9b91d46c9a3c-4e5f3569df0de75f-01
x-trace-id: 77004c937b44722e75fa9b91d46c9a3c
x-span-id: 4e5f3569df0de75f
x-sampled: true
x-ratelimit-limit: 10
x-ratelimit-remaining: 8
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: bee72860-584a-4f6a-89af-43c737f2c6e0
 

{
    "success": true,
    "message": "Supported formats retrieved successfully",
    "data": {
        "startable_formats": [
            "pdf",
            "doc",
            "docx",
            "xls",
            "xlsx",
            "ppt",
            "pptx",
            "odt",
            "ods",
            "odp",
            "txt",
            "text",
            "csv",
            "tsv",
            "html",
            "htm",
            "xhtml",
            "xml",
            "xsl",
            "xslt",
            "rss",
            "atom",
            "json",
            "arb",
            "jsonl",
            "ndjson",
            "rtf",
            "md",
            "markdown",
            "mdx",
            "rst",
            "log",
            "yml",
            "yaml",
            "resx",
            "tex",
            "ini",
            "conf",
            "cfg",
            "svg",
            "po",
            "pot",
            "xliff",
            "xlf",
            "properties",
            "strings",
            "lang",
            "stringsdict",
            "ts",
            "ftl",
            "tmx",
            "epub",
            "srt",
            "vtt",
            "ass",
            "ssa",
            "sub",
            "sbv",
            "jpg",
            "jpeg",
            "png",
            "gif",
            "bmp",
            "tiff",
            "tif",
            "webp",
            "heic",
            "heif"
        ],
        "production_safe_formats": [
            "pdf",
            "docx",
            "xlsx",
            "pptx",
            "odt",
            "ods",
            "odp",
            "txt",
            "text",
            "csv",
            "tsv",
            "html",
            "htm",
            "xhtml",
            "xml",
            "xsl",
            "xslt",
            "rss",
            "atom",
            "json",
            "arb",
            "jsonl",
            "ndjson",
            "md",
            "markdown",
            "mdx",
            "rst",
            "log",
            "yml",
            "yaml",
            "resx",
            "tex",
            "ini",
            "conf",
            "cfg",
            "svg",
            "po",
            "pot",
            "xliff",
            "xlf",
            "properties",
            "strings",
            "lang",
            "stringsdict",
            "ts",
            "ftl",
            "tmx",
            "epub",
            "srt",
            "vtt",
            "ass",
            "ssa",
            "sub",
            "sbv",
            "jpg",
            "jpeg",
            "png",
            "gif",
            "bmp",
            "tiff",
            "tif",
            "webp",
            "heic",
            "heif"
        ],
        "conversion_required_formats": [
            "doc",
            "xls",
            "ppt",
            "rtf"
        ],
        "beta_formats": [
            "azw3",
            "mobi",
            "azw"
        ],
        "not_yet_supported_formats": [
            "azw3",
            "mobi",
            "azw"
        ],
        "unsafe_formats": [
            "zip",
            "rar",
            "7z",
            "tar",
            "gz",
            "bz2",
            "xz"
        ],
        "unclassified_formats": [],
        "beta_enabled": false,
        "text_based": [
            "txt",
            "text",
            "csv",
            "tsv",
            "html",
            "htm",
            "xhtml",
            "xml",
            "xsl",
            "xslt",
            "rss",
            "atom",
            "json",
            "arb",
            "jsonl",
            "ndjson",
            "md",
            "markdown",
            "mdx",
            "rst",
            "log",
            "yml",
            "yaml",
            "resx",
            "tex",
            "ini",
            "conf",
            "cfg",
            "svg",
            "po",
            "pot",
            "xliff",
            "xlf",
            "properties",
            "strings",
            "lang",
            "stringsdict",
            "ts",
            "ftl",
            "tmx",
            "epub",
            "srt",
            "vtt",
            "ass",
            "ssa",
            "sub",
            "sbv"
        ],
        "document_based": [
            "pdf",
            "doc",
            "docx",
            "xls",
            "xlsx",
            "ppt",
            "pptx",
            "odt",
            "ods",
            "odp",
            "rtf"
        ],
        "format_groups": {
            "documents": [
                "pdf",
                "docx",
                "xlsx",
                "pptx",
                "odt",
                "ods",
                "odp",
                "epub"
            ],
            "images": [
                "jpg",
                "jpeg",
                "png",
                "gif",
                "bmp",
                "tiff",
                "tif",
                "webp",
                "heic",
                "heif"
            ],
            "legacy_conversion": [
                "doc",
                "xls",
                "ppt",
                "rtf"
            ],
            "localization": [
                "resx",
                "po",
                "pot",
                "xliff",
                "xlf",
                "properties",
                "strings",
                "lang",
                "stringsdict",
                "ts",
                "ftl",
                "tmx"
            ],
            "markup_and_feeds": [
                "html",
                "htm",
                "xhtml",
                "xml",
                "xsl",
                "xslt",
                "rss",
                "atom",
                "svg"
            ],
            "other": [
                "tex",
                "ini",
                "conf",
                "cfg"
            ],
            "plain_text": [
                "txt",
                "text",
                "md",
                "markdown",
                "mdx",
                "rst",
                "log"
            ],
            "structured_data": [
                "csv",
                "tsv",
                "json",
                "arb",
                "jsonl",
                "ndjson",
                "yml",
                "yaml"
            ],
            "subtitles": [
                "srt",
                "vtt",
                "ass",
                "ssa",
                "sub",
                "sbv"
            ]
        },
        "production_format_groups": {
            "documents": [
                "pdf",
                "docx",
                "xlsx",
                "pptx",
                "odt",
                "ods",
                "odp",
                "epub"
            ],
            "images": [
                "jpg",
                "jpeg",
                "png",
                "gif",
                "bmp",
                "tiff",
                "tif",
                "webp",
                "heic",
                "heif"
            ],
            "localization": [
                "resx",
                "po",
                "pot",
                "xliff",
                "xlf",
                "properties",
                "strings",
                "lang",
                "stringsdict",
                "ts",
                "ftl",
                "tmx"
            ],
            "markup_and_feeds": [
                "html",
                "htm",
                "xhtml",
                "xml",
                "xsl",
                "xslt",
                "rss",
                "atom",
                "svg"
            ],
            "other": [
                "tex",
                "ini",
                "conf",
                "cfg"
            ],
            "plain_text": [
                "txt",
                "text",
                "md",
                "markdown",
                "mdx",
                "rst",
                "log"
            ],
            "structured_data": [
                "csv",
                "tsv",
                "json",
                "arb",
                "jsonl",
                "ndjson",
                "yml",
                "yaml"
            ],
            "subtitles": [
                "srt",
                "vtt",
                "ass",
                "ssa",
                "sub",
                "sbv"
            ]
        },
        "conversion_format_groups": {
            "legacy_conversion": [
                "doc",
                "xls",
                "ppt",
                "rtf"
            ]
        },
        "beta_format_groups": {
            "ebooks": [
                "azw3",
                "mobi",
                "azw"
            ]
        },
        "max_text_file_size": 5242880,
        "max_document_size": 10485760
    }
}
 

Request      

GET api/v1/public/translation/supported-formats

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/public/languages

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/public/languages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/public/languages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-9c49c5c59db41c950cbe3ac2e9769009-d2481f05dd50b06c-01
x-trace-id: 9c49c5c59db41c950cbe3ac2e9769009
x-span-id: d2481f05dd50b06c
x-sampled: true
x-ratelimit-limit: 10
x-ratelimit-remaining: 8
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 129bdb3c-1bd2-4ae3-90d5-db3d26dfe827
 

{
    "success": false,
    "error_code": "internal_server_error",
    "message": "Something went wrong on our side. Please try again, and contact support if the problem persists.",
    "timestamp": "2026-09-04T04:28:23.542107Z",
    "context": {
        "path": "/api/v1/public/languages",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/public/languages

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/public/countries

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/public/countries" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/public/countries"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-f0589b7a86163e13eb18944b84cfb26e-f4f50233bdb0a3f8-01
x-trace-id: f0589b7a86163e13eb18944b84cfb26e
x-span-id: f4f50233bdb0a3f8
x-sampled: true
x-ratelimit-limit: 10
x-ratelimit-remaining: 8
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 54e8bbfe-e75f-4926-8764-a76eec4697e4
 

{
    "success": true,
    "message": "Success",
    "data": {
        "countries": [
            {
                "id": 1,
                "code": "US",
                "name": "United States",
                "native": "United States",
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z"
            },
            {
                "id": 2,
                "code": "CA",
                "name": "Canada",
                "native": "Canada",
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z"
            },
            {
                "id": 3,
                "code": "CH",
                "name": "Switzerland",
                "native": "Schweiz",
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z"
            },
            {
                "id": 4,
                "code": "JP",
                "name": "Japan",
                "native": "日本",
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 5,
                "code": "AD",
                "name": "Andorra",
                "native": "Andorra",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 6,
                "code": "AE",
                "name": "United Arab Emirates",
                "native": "United Arab Emirates",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 7,
                "code": "AF",
                "name": "Afghanistan",
                "native": "Afghanistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 8,
                "code": "AG",
                "name": "Antigua & Barbuda",
                "native": "Antigua & Barbuda",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 9,
                "code": "AI",
                "name": "Anguilla",
                "native": "Anguilla",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 10,
                "code": "AL",
                "name": "Albania",
                "native": "Albania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 11,
                "code": "AM",
                "name": "Armenia",
                "native": "Armenia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 12,
                "code": "AO",
                "name": "Angola",
                "native": "Angola",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 13,
                "code": "AQ",
                "name": "Antarctica",
                "native": "Antarctica",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 14,
                "code": "AR",
                "name": "Argentina",
                "native": "Argentina",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 15,
                "code": "AS",
                "name": "American Samoa",
                "native": "American Samoa",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 16,
                "code": "AT",
                "name": "Austria",
                "native": "Austria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 17,
                "code": "AU",
                "name": "Australia",
                "native": "Australia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 18,
                "code": "AW",
                "name": "Aruba",
                "native": "Aruba",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 19,
                "code": "AX",
                "name": "Åland Islands",
                "native": "Åland Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 20,
                "code": "AZ",
                "name": "Azerbaijan",
                "native": "Azerbaijan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 21,
                "code": "BA",
                "name": "Bosnia & Herzegovina",
                "native": "Bosnia & Herzegovina",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 22,
                "code": "BB",
                "name": "Barbados",
                "native": "Barbados",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 23,
                "code": "BD",
                "name": "Bangladesh",
                "native": "Bangladesh",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 24,
                "code": "BE",
                "name": "Belgium",
                "native": "Belgium",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 25,
                "code": "BF",
                "name": "Burkina Faso",
                "native": "Burkina Faso",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 26,
                "code": "BG",
                "name": "Bulgaria",
                "native": "Bulgaria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 27,
                "code": "BH",
                "name": "Bahrain",
                "native": "Bahrain",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 28,
                "code": "BI",
                "name": "Burundi",
                "native": "Burundi",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 29,
                "code": "BJ",
                "name": "Benin",
                "native": "Benin",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 30,
                "code": "BL",
                "name": "St. Barthélemy",
                "native": "St. Barthélemy",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 31,
                "code": "BM",
                "name": "Bermuda",
                "native": "Bermuda",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 32,
                "code": "BN",
                "name": "Brunei",
                "native": "Brunei",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 33,
                "code": "BO",
                "name": "Bolivia",
                "native": "Bolivia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 34,
                "code": "BQ",
                "name": "Caribbean Netherlands",
                "native": "Caribbean Netherlands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 35,
                "code": "BR",
                "name": "Brazil",
                "native": "Brazil",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 36,
                "code": "BS",
                "name": "Bahamas",
                "native": "Bahamas",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 37,
                "code": "BT",
                "name": "Bhutan",
                "native": "Bhutan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 38,
                "code": "BV",
                "name": "Bouvet Island",
                "native": "Bouvet Island",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 39,
                "code": "BW",
                "name": "Botswana",
                "native": "Botswana",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 40,
                "code": "BY",
                "name": "Belarus",
                "native": "Belarus",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 41,
                "code": "BZ",
                "name": "Belize",
                "native": "Belize",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 42,
                "code": "CC",
                "name": "Cocos (Keeling) Islands",
                "native": "Cocos (Keeling) Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 43,
                "code": "CD",
                "name": "Congo - Kinshasa",
                "native": "Congo - Kinshasa",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 44,
                "code": "CF",
                "name": "Central African Republic",
                "native": "Central African Republic",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 45,
                "code": "CG",
                "name": "Congo - Brazzaville",
                "native": "Congo - Brazzaville",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 46,
                "code": "CI",
                "name": "Côte d’Ivoire",
                "native": "Côte d’Ivoire",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 47,
                "code": "CK",
                "name": "Cook Islands",
                "native": "Cook Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 48,
                "code": "CL",
                "name": "Chile",
                "native": "Chile",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 49,
                "code": "CM",
                "name": "Cameroon",
                "native": "Cameroon",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 50,
                "code": "CN",
                "name": "China",
                "native": "China",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 51,
                "code": "CO",
                "name": "Colombia",
                "native": "Colombia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 52,
                "code": "CR",
                "name": "Costa Rica",
                "native": "Costa Rica",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 53,
                "code": "CU",
                "name": "Cuba",
                "native": "Cuba",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 54,
                "code": "CV",
                "name": "Cape Verde",
                "native": "Cape Verde",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 55,
                "code": "CW",
                "name": "Curaçao",
                "native": "Curaçao",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 56,
                "code": "CX",
                "name": "Christmas Island",
                "native": "Christmas Island",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 57,
                "code": "CY",
                "name": "Cyprus",
                "native": "Cyprus",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 58,
                "code": "CZ",
                "name": "Czechia",
                "native": "Czechia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 59,
                "code": "DE",
                "name": "Germany",
                "native": "Germany",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 60,
                "code": "DJ",
                "name": "Djibouti",
                "native": "Djibouti",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 61,
                "code": "DK",
                "name": "Denmark",
                "native": "Denmark",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 62,
                "code": "DM",
                "name": "Dominica",
                "native": "Dominica",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 63,
                "code": "DO",
                "name": "Dominican Republic",
                "native": "Dominican Republic",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 64,
                "code": "DZ",
                "name": "Algeria",
                "native": "Algeria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 65,
                "code": "EC",
                "name": "Ecuador",
                "native": "Ecuador",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 66,
                "code": "EE",
                "name": "Estonia",
                "native": "Estonia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 67,
                "code": "EG",
                "name": "Egypt",
                "native": "Egypt",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 68,
                "code": "EH",
                "name": "Western Sahara",
                "native": "Western Sahara",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 69,
                "code": "ER",
                "name": "Eritrea",
                "native": "Eritrea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 70,
                "code": "ES",
                "name": "Spain",
                "native": "Spain",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 71,
                "code": "ET",
                "name": "Ethiopia",
                "native": "Ethiopia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 72,
                "code": "FI",
                "name": "Finland",
                "native": "Finland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 73,
                "code": "FJ",
                "name": "Fiji",
                "native": "Fiji",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 74,
                "code": "FK",
                "name": "Falkland Islands",
                "native": "Falkland Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 75,
                "code": "FM",
                "name": "Micronesia",
                "native": "Micronesia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 76,
                "code": "FO",
                "name": "Faroe Islands",
                "native": "Faroe Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 77,
                "code": "FR",
                "name": "France",
                "native": "France",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 78,
                "code": "GA",
                "name": "Gabon",
                "native": "Gabon",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 79,
                "code": "GB",
                "name": "United Kingdom",
                "native": "United Kingdom",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 80,
                "code": "GD",
                "name": "Grenada",
                "native": "Grenada",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 81,
                "code": "GE",
                "name": "Georgia",
                "native": "Georgia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 82,
                "code": "GF",
                "name": "French Guiana",
                "native": "French Guiana",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 83,
                "code": "GG",
                "name": "Guernsey",
                "native": "Guernsey",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 84,
                "code": "GH",
                "name": "Ghana",
                "native": "Ghana",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 85,
                "code": "GI",
                "name": "Gibraltar",
                "native": "Gibraltar",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 86,
                "code": "GL",
                "name": "Greenland",
                "native": "Greenland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 87,
                "code": "GM",
                "name": "Gambia",
                "native": "Gambia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 88,
                "code": "GN",
                "name": "Guinea",
                "native": "Guinea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 89,
                "code": "GP",
                "name": "Guadeloupe",
                "native": "Guadeloupe",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 90,
                "code": "GQ",
                "name": "Equatorial Guinea",
                "native": "Equatorial Guinea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 91,
                "code": "GR",
                "name": "Greece",
                "native": "Greece",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 92,
                "code": "GS",
                "name": "South Georgia & South Sandwich Islands",
                "native": "South Georgia & South Sandwich Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 93,
                "code": "GT",
                "name": "Guatemala",
                "native": "Guatemala",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 94,
                "code": "GU",
                "name": "Guam",
                "native": "Guam",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 95,
                "code": "GW",
                "name": "Guinea-Bissau",
                "native": "Guinea-Bissau",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 96,
                "code": "GY",
                "name": "Guyana",
                "native": "Guyana",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 97,
                "code": "HK",
                "name": "Hong Kong SAR China",
                "native": "Hong Kong SAR China",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 98,
                "code": "HM",
                "name": "Heard & McDonald Islands",
                "native": "Heard & McDonald Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 99,
                "code": "HN",
                "name": "Honduras",
                "native": "Honduras",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 100,
                "code": "HR",
                "name": "Croatia",
                "native": "Croatia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 101,
                "code": "HT",
                "name": "Haiti",
                "native": "Haiti",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 102,
                "code": "HU",
                "name": "Hungary",
                "native": "Hungary",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 103,
                "code": "ID",
                "name": "Indonesia",
                "native": "Indonesia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 104,
                "code": "IE",
                "name": "Ireland",
                "native": "Ireland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 105,
                "code": "IL",
                "name": "Israel",
                "native": "Israel",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 106,
                "code": "IM",
                "name": "Isle of Man",
                "native": "Isle of Man",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 107,
                "code": "IN",
                "name": "India",
                "native": "India",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 108,
                "code": "IO",
                "name": "British Indian Ocean Territory",
                "native": "British Indian Ocean Territory",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 109,
                "code": "IQ",
                "name": "Iraq",
                "native": "Iraq",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 110,
                "code": "IR",
                "name": "Iran",
                "native": "Iran",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 111,
                "code": "IS",
                "name": "Iceland",
                "native": "Iceland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 112,
                "code": "IT",
                "name": "Italy",
                "native": "Italy",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 113,
                "code": "JE",
                "name": "Jersey",
                "native": "Jersey",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 114,
                "code": "JM",
                "name": "Jamaica",
                "native": "Jamaica",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 115,
                "code": "JO",
                "name": "Jordan",
                "native": "Jordan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 116,
                "code": "KE",
                "name": "Kenya",
                "native": "Kenya",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 117,
                "code": "KG",
                "name": "Kyrgyzstan",
                "native": "Kyrgyzstan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 118,
                "code": "KH",
                "name": "Cambodia",
                "native": "Cambodia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 119,
                "code": "KI",
                "name": "Kiribati",
                "native": "Kiribati",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 120,
                "code": "KM",
                "name": "Comoros",
                "native": "Comoros",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 121,
                "code": "KN",
                "name": "St. Kitts & Nevis",
                "native": "St. Kitts & Nevis",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 122,
                "code": "KP",
                "name": "North Korea",
                "native": "North Korea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 123,
                "code": "KR",
                "name": "South Korea",
                "native": "South Korea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 124,
                "code": "KW",
                "name": "Kuwait",
                "native": "Kuwait",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 125,
                "code": "KY",
                "name": "Cayman Islands",
                "native": "Cayman Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 126,
                "code": "KZ",
                "name": "Kazakhstan",
                "native": "Kazakhstan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 127,
                "code": "LA",
                "name": "Laos",
                "native": "Laos",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 128,
                "code": "LB",
                "name": "Lebanon",
                "native": "Lebanon",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 129,
                "code": "LC",
                "name": "St. Lucia",
                "native": "St. Lucia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 130,
                "code": "LI",
                "name": "Liechtenstein",
                "native": "Liechtenstein",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 131,
                "code": "LK",
                "name": "Sri Lanka",
                "native": "Sri Lanka",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 132,
                "code": "LR",
                "name": "Liberia",
                "native": "Liberia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 133,
                "code": "LS",
                "name": "Lesotho",
                "native": "Lesotho",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 134,
                "code": "LT",
                "name": "Lithuania",
                "native": "Lithuania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 135,
                "code": "LU",
                "name": "Luxembourg",
                "native": "Luxembourg",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 136,
                "code": "LV",
                "name": "Latvia",
                "native": "Latvia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 137,
                "code": "LY",
                "name": "Libya",
                "native": "Libya",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 138,
                "code": "MA",
                "name": "Morocco",
                "native": "Morocco",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 139,
                "code": "MC",
                "name": "Monaco",
                "native": "Monaco",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 140,
                "code": "MD",
                "name": "Moldova",
                "native": "Moldova",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 141,
                "code": "ME",
                "name": "Montenegro",
                "native": "Montenegro",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 142,
                "code": "MF",
                "name": "St. Martin",
                "native": "St. Martin",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 143,
                "code": "MG",
                "name": "Madagascar",
                "native": "Madagascar",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 144,
                "code": "MH",
                "name": "Marshall Islands",
                "native": "Marshall Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 145,
                "code": "MK",
                "name": "North Macedonia",
                "native": "North Macedonia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 146,
                "code": "ML",
                "name": "Mali",
                "native": "Mali",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 147,
                "code": "MM",
                "name": "Myanmar (Burma)",
                "native": "Myanmar (Burma)",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 148,
                "code": "MN",
                "name": "Mongolia",
                "native": "Mongolia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 149,
                "code": "MO",
                "name": "Macao SAR China",
                "native": "Macao SAR China",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 150,
                "code": "MP",
                "name": "Northern Mariana Islands",
                "native": "Northern Mariana Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 151,
                "code": "MQ",
                "name": "Martinique",
                "native": "Martinique",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 152,
                "code": "MR",
                "name": "Mauritania",
                "native": "Mauritania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 153,
                "code": "MS",
                "name": "Montserrat",
                "native": "Montserrat",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 154,
                "code": "MT",
                "name": "Malta",
                "native": "Malta",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 155,
                "code": "MU",
                "name": "Mauritius",
                "native": "Mauritius",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 156,
                "code": "MV",
                "name": "Maldives",
                "native": "Maldives",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 157,
                "code": "MW",
                "name": "Malawi",
                "native": "Malawi",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 158,
                "code": "MX",
                "name": "Mexico",
                "native": "Mexico",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 159,
                "code": "MY",
                "name": "Malaysia",
                "native": "Malaysia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 160,
                "code": "MZ",
                "name": "Mozambique",
                "native": "Mozambique",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 161,
                "code": "NA",
                "name": "Namibia",
                "native": "Namibia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 162,
                "code": "NC",
                "name": "New Caledonia",
                "native": "New Caledonia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 163,
                "code": "NE",
                "name": "Niger",
                "native": "Niger",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 164,
                "code": "NF",
                "name": "Norfolk Island",
                "native": "Norfolk Island",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 165,
                "code": "NG",
                "name": "Nigeria",
                "native": "Nigeria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 166,
                "code": "NI",
                "name": "Nicaragua",
                "native": "Nicaragua",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 167,
                "code": "NL",
                "name": "Netherlands",
                "native": "Netherlands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 168,
                "code": "NO",
                "name": "Norway",
                "native": "Norway",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 169,
                "code": "NP",
                "name": "Nepal",
                "native": "Nepal",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 170,
                "code": "NR",
                "name": "Nauru",
                "native": "Nauru",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 171,
                "code": "NU",
                "name": "Niue",
                "native": "Niue",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 172,
                "code": "NZ",
                "name": "New Zealand",
                "native": "New Zealand",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 173,
                "code": "OM",
                "name": "Oman",
                "native": "Oman",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 174,
                "code": "PA",
                "name": "Panama",
                "native": "Panama",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 175,
                "code": "PE",
                "name": "Peru",
                "native": "Peru",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 176,
                "code": "PF",
                "name": "French Polynesia",
                "native": "French Polynesia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 177,
                "code": "PG",
                "name": "Papua New Guinea",
                "native": "Papua New Guinea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 178,
                "code": "PH",
                "name": "Philippines",
                "native": "Philippines",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 179,
                "code": "PK",
                "name": "Pakistan",
                "native": "Pakistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 180,
                "code": "PL",
                "name": "Poland",
                "native": "Poland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 181,
                "code": "PM",
                "name": "St. Pierre & Miquelon",
                "native": "St. Pierre & Miquelon",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 182,
                "code": "PN",
                "name": "Pitcairn Islands",
                "native": "Pitcairn Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 183,
                "code": "PR",
                "name": "Puerto Rico",
                "native": "Puerto Rico",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 184,
                "code": "PS",
                "name": "Palestinian Territories",
                "native": "Palestinian Territories",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 185,
                "code": "PT",
                "name": "Portugal",
                "native": "Portugal",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 186,
                "code": "PW",
                "name": "Palau",
                "native": "Palau",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 187,
                "code": "PY",
                "name": "Paraguay",
                "native": "Paraguay",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 188,
                "code": "QA",
                "name": "Qatar",
                "native": "Qatar",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 189,
                "code": "RE",
                "name": "Réunion",
                "native": "Réunion",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 190,
                "code": "RO",
                "name": "Romania",
                "native": "Romania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 191,
                "code": "RS",
                "name": "Serbia",
                "native": "Serbia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 192,
                "code": "RU",
                "name": "Russia",
                "native": "Russia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 193,
                "code": "RW",
                "name": "Rwanda",
                "native": "Rwanda",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 194,
                "code": "SA",
                "name": "Saudi Arabia",
                "native": "Saudi Arabia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 195,
                "code": "SB",
                "name": "Solomon Islands",
                "native": "Solomon Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 196,
                "code": "SC",
                "name": "Seychelles",
                "native": "Seychelles",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 197,
                "code": "SD",
                "name": "Sudan",
                "native": "Sudan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 198,
                "code": "SE",
                "name": "Sweden",
                "native": "Sweden",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 199,
                "code": "SG",
                "name": "Singapore",
                "native": "Singapore",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 200,
                "code": "SH",
                "name": "St. Helena",
                "native": "St. Helena",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 201,
                "code": "SI",
                "name": "Slovenia",
                "native": "Slovenia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 202,
                "code": "SJ",
                "name": "Svalbard & Jan Mayen",
                "native": "Svalbard & Jan Mayen",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 203,
                "code": "SK",
                "name": "Slovakia",
                "native": "Slovakia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 204,
                "code": "SL",
                "name": "Sierra Leone",
                "native": "Sierra Leone",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 205,
                "code": "SM",
                "name": "San Marino",
                "native": "San Marino",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 206,
                "code": "SN",
                "name": "Senegal",
                "native": "Senegal",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 207,
                "code": "SO",
                "name": "Somalia",
                "native": "Somalia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 208,
                "code": "SR",
                "name": "Suriname",
                "native": "Suriname",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 209,
                "code": "SS",
                "name": "South Sudan",
                "native": "South Sudan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 210,
                "code": "ST",
                "name": "São Tomé & Príncipe",
                "native": "São Tomé & Príncipe",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 211,
                "code": "SV",
                "name": "El Salvador",
                "native": "El Salvador",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 212,
                "code": "SX",
                "name": "Sint Maarten",
                "native": "Sint Maarten",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 213,
                "code": "SY",
                "name": "Syria",
                "native": "Syria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 214,
                "code": "SZ",
                "name": "Eswatini",
                "native": "Eswatini",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 215,
                "code": "TC",
                "name": "Turks & Caicos Islands",
                "native": "Turks & Caicos Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 216,
                "code": "TD",
                "name": "Chad",
                "native": "Chad",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 217,
                "code": "TF",
                "name": "French Southern Territories",
                "native": "French Southern Territories",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 218,
                "code": "TG",
                "name": "Togo",
                "native": "Togo",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 219,
                "code": "TH",
                "name": "Thailand",
                "native": "Thailand",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 220,
                "code": "TJ",
                "name": "Tajikistan",
                "native": "Tajikistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 221,
                "code": "TK",
                "name": "Tokelau",
                "native": "Tokelau",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 222,
                "code": "TL",
                "name": "Timor-Leste",
                "native": "Timor-Leste",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 223,
                "code": "TM",
                "name": "Turkmenistan",
                "native": "Turkmenistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 224,
                "code": "TN",
                "name": "Tunisia",
                "native": "Tunisia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 225,
                "code": "TO",
                "name": "Tonga",
                "native": "Tonga",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 226,
                "code": "TR",
                "name": "Türkiye",
                "native": "Türkiye",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 227,
                "code": "TT",
                "name": "Trinidad & Tobago",
                "native": "Trinidad & Tobago",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 228,
                "code": "TV",
                "name": "Tuvalu",
                "native": "Tuvalu",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 229,
                "code": "TW",
                "name": "Taiwan",
                "native": "Taiwan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 230,
                "code": "TZ",
                "name": "Tanzania",
                "native": "Tanzania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 231,
                "code": "UA",
                "name": "Ukraine",
                "native": "Ukraine",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 232,
                "code": "UG",
                "name": "Uganda",
                "native": "Uganda",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 233,
                "code": "UM",
                "name": "U.S. Outlying Islands",
                "native": "U.S. Outlying Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 234,
                "code": "UY",
                "name": "Uruguay",
                "native": "Uruguay",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 235,
                "code": "UZ",
                "name": "Uzbekistan",
                "native": "Uzbekistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 236,
                "code": "VA",
                "name": "Vatican City",
                "native": "Vatican City",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 237,
                "code": "VC",
                "name": "St. Vincent & Grenadines",
                "native": "St. Vincent & Grenadines",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 238,
                "code": "VE",
                "name": "Venezuela",
                "native": "Venezuela",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 239,
                "code": "VG",
                "name": "British Virgin Islands",
                "native": "British Virgin Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 240,
                "code": "VI",
                "name": "U.S. Virgin Islands",
                "native": "U.S. Virgin Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 241,
                "code": "VN",
                "name": "Vietnam",
                "native": "Vietnam",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 242,
                "code": "VU",
                "name": "Vanuatu",
                "native": "Vanuatu",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 243,
                "code": "WF",
                "name": "Wallis & Futuna",
                "native": "Wallis & Futuna",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 244,
                "code": "WS",
                "name": "Samoa",
                "native": "Samoa",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 245,
                "code": "YE",
                "name": "Yemen",
                "native": "Yemen",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 246,
                "code": "YT",
                "name": "Mayotte",
                "native": "Mayotte",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 247,
                "code": "ZA",
                "name": "South Africa",
                "native": "South Africa",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 248,
                "code": "ZM",
                "name": "Zambia",
                "native": "Zambia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 249,
                "code": "ZW",
                "name": "Zimbabwe",
                "native": "Zimbabwe",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            }
        ]
    }
}
 

Request      

GET api/v1/public/countries

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/public/currencies

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/public/currencies" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/public/currencies"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-aaef285d85c91a0216984c9f1420903e-2cd9fcc60b8b1ed1-01
x-trace-id: aaef285d85c91a0216984c9f1420903e
x-span-id: 2cd9fcc60b8b1ed1
x-sampled: true
x-ratelimit-limit: 10
x-ratelimit-remaining: 8
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 48480fff-57f2-4075-8c5e-a6c807b75977
 

{
    "success": true,
    "message": "Success",
    "data": {
        "currencies": [
            {
                "id": 1,
                "code": "USD",
                "name": "US Dollar",
                "native": "US Dollar",
                "symbol": "$",
                "symbol_first": true,
                "deleted_at": null,
                "deleted_by": null,
                "decimal_places": 2,
                "thousands_separator": ",",
                "decimal_separator": ".",
                "is_base": false,
                "exchange_rate": "1.000000",
                "last_updated": null,
                "payment_methods": null,
                "regions": null,
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z",
                "is_active": true
            },
            {
                "id": 2,
                "code": "EUR",
                "name": "Euro",
                "native": "Euro",
                "symbol": "",
                "symbol_first": true,
                "deleted_at": null,
                "deleted_by": null,
                "decimal_places": 2,
                "thousands_separator": ",",
                "decimal_separator": ".",
                "is_base": false,
                "exchange_rate": "1.000000",
                "last_updated": null,
                "payment_methods": null,
                "regions": null,
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z",
                "is_active": true
            }
        ]
    }
}
 

Request      

GET api/v1/public/currencies

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/public/timezones

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/public/timezones" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/public/timezones"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-d51697bd9f18d618789ed85e33a58d4e-268134f5aa039cad-01
x-trace-id: d51697bd9f18d618789ed85e33a58d4e
x-span-id: 268134f5aa039cad
x-sampled: true
x-ratelimit-limit: 10
x-ratelimit-remaining: 8
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c000892f-623a-4386-a602-763742b5dbe8
 

{
    "success": true,
    "message": "Success",
    "data": {
        "timezones": {
            "Africa": [
                {
                    "id": "Africa/Abidjan",
                    "name": "Africa/Abidjan",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Abidjan"
                },
                {
                    "id": "Africa/Accra",
                    "name": "Africa/Accra",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Accra"
                },
                {
                    "id": "Africa/Addis_Ababa",
                    "name": "Africa/Addis_Ababa",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Africa/Addis_Ababa"
                },
                {
                    "id": "Africa/Algiers",
                    "name": "Africa/Algiers",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Algiers"
                },
                {
                    "id": "Africa/Asmara",
                    "name": "Africa/Asmara",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Africa/Asmara"
                },
                {
                    "id": "Africa/Bamako",
                    "name": "Africa/Bamako",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Bamako"
                },
                {
                    "id": "Africa/Bangui",
                    "name": "Africa/Bangui",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Bangui"
                },
                {
                    "id": "Africa/Banjul",
                    "name": "Africa/Banjul",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Banjul"
                },
                {
                    "id": "Africa/Bissau",
                    "name": "Africa/Bissau",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Bissau"
                },
                {
                    "id": "Africa/Blantyre",
                    "name": "Africa/Blantyre",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Blantyre"
                },
                {
                    "id": "Africa/Brazzaville",
                    "name": "Africa/Brazzaville",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Brazzaville"
                },
                {
                    "id": "Africa/Bujumbura",
                    "name": "Africa/Bujumbura",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Bujumbura"
                },
                {
                    "id": "Africa/Cairo",
                    "name": "Africa/Cairo",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Africa/Cairo"
                },
                {
                    "id": "Africa/Casablanca",
                    "name": "Africa/Casablanca",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Casablanca"
                },
                {
                    "id": "Africa/Ceuta",
                    "name": "Africa/Ceuta",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Ceuta"
                },
                {
                    "id": "Africa/Conakry",
                    "name": "Africa/Conakry",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Conakry"
                },
                {
                    "id": "Africa/Dakar",
                    "name": "Africa/Dakar",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Dakar"
                },
                {
                    "id": "Africa/Dar_es_Salaam",
                    "name": "Africa/Dar_es_Salaam",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Africa/Dar_es_Salaam"
                },
                {
                    "id": "Africa/Djibouti",
                    "name": "Africa/Djibouti",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Africa/Djibouti"
                },
                {
                    "id": "Africa/Douala",
                    "name": "Africa/Douala",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Douala"
                },
                {
                    "id": "Africa/El_Aaiun",
                    "name": "Africa/El_Aaiun",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/El_Aaiun"
                },
                {
                    "id": "Africa/Freetown",
                    "name": "Africa/Freetown",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Freetown"
                },
                {
                    "id": "Africa/Gaborone",
                    "name": "Africa/Gaborone",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Gaborone"
                },
                {
                    "id": "Africa/Harare",
                    "name": "Africa/Harare",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Harare"
                },
                {
                    "id": "Africa/Johannesburg",
                    "name": "Africa/Johannesburg",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Johannesburg"
                },
                {
                    "id": "Africa/Juba",
                    "name": "Africa/Juba",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Juba"
                },
                {
                    "id": "Africa/Kampala",
                    "name": "Africa/Kampala",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Africa/Kampala"
                },
                {
                    "id": "Africa/Khartoum",
                    "name": "Africa/Khartoum",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Khartoum"
                },
                {
                    "id": "Africa/Kigali",
                    "name": "Africa/Kigali",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Kigali"
                },
                {
                    "id": "Africa/Kinshasa",
                    "name": "Africa/Kinshasa",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Kinshasa"
                },
                {
                    "id": "Africa/Lagos",
                    "name": "Africa/Lagos",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Lagos"
                },
                {
                    "id": "Africa/Libreville",
                    "name": "Africa/Libreville",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Libreville"
                },
                {
                    "id": "Africa/Lome",
                    "name": "Africa/Lome",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Lome"
                },
                {
                    "id": "Africa/Luanda",
                    "name": "Africa/Luanda",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Luanda"
                },
                {
                    "id": "Africa/Lubumbashi",
                    "name": "Africa/Lubumbashi",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Lubumbashi"
                },
                {
                    "id": "Africa/Lusaka",
                    "name": "Africa/Lusaka",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Lusaka"
                },
                {
                    "id": "Africa/Malabo",
                    "name": "Africa/Malabo",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Malabo"
                },
                {
                    "id": "Africa/Maputo",
                    "name": "Africa/Maputo",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Maputo"
                },
                {
                    "id": "Africa/Maseru",
                    "name": "Africa/Maseru",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Maseru"
                },
                {
                    "id": "Africa/Mbabane",
                    "name": "Africa/Mbabane",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Mbabane"
                },
                {
                    "id": "Africa/Mogadishu",
                    "name": "Africa/Mogadishu",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Africa/Mogadishu"
                },
                {
                    "id": "Africa/Monrovia",
                    "name": "Africa/Monrovia",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Monrovia"
                },
                {
                    "id": "Africa/Nairobi",
                    "name": "Africa/Nairobi",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Africa/Nairobi"
                },
                {
                    "id": "Africa/Ndjamena",
                    "name": "Africa/Ndjamena",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Ndjamena"
                },
                {
                    "id": "Africa/Niamey",
                    "name": "Africa/Niamey",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Niamey"
                },
                {
                    "id": "Africa/Nouakchott",
                    "name": "Africa/Nouakchott",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Nouakchott"
                },
                {
                    "id": "Africa/Ouagadougou",
                    "name": "Africa/Ouagadougou",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Ouagadougou"
                },
                {
                    "id": "Africa/Porto-Novo",
                    "name": "Africa/Porto-Novo",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Porto-Novo"
                },
                {
                    "id": "Africa/Sao_Tome",
                    "name": "Africa/Sao_Tome",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Africa/Sao_Tome"
                },
                {
                    "id": "Africa/Tripoli",
                    "name": "Africa/Tripoli",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Tripoli"
                },
                {
                    "id": "Africa/Tunis",
                    "name": "Africa/Tunis",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Africa/Tunis"
                },
                {
                    "id": "Africa/Windhoek",
                    "name": "Africa/Windhoek",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Africa/Windhoek"
                }
            ],
            "America": [
                {
                    "id": "America/Adak",
                    "name": "America/Adak",
                    "offset": "-09:00",
                    "label": "(UTC-09:00) America/Adak"
                },
                {
                    "id": "America/Anchorage",
                    "name": "America/Anchorage",
                    "offset": "-08:00",
                    "label": "(UTC-08:00) America/Anchorage"
                },
                {
                    "id": "America/Anguilla",
                    "name": "America/Anguilla",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Anguilla"
                },
                {
                    "id": "America/Antigua",
                    "name": "America/Antigua",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Antigua"
                },
                {
                    "id": "America/Araguaina",
                    "name": "America/Araguaina",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Araguaina"
                },
                {
                    "id": "America/Argentina/Buenos_Aires",
                    "name": "America/Argentina/Buenos_Aires",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/Buenos_Aires"
                },
                {
                    "id": "America/Argentina/Catamarca",
                    "name": "America/Argentina/Catamarca",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/Catamarca"
                },
                {
                    "id": "America/Argentina/Cordoba",
                    "name": "America/Argentina/Cordoba",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/Cordoba"
                },
                {
                    "id": "America/Argentina/Jujuy",
                    "name": "America/Argentina/Jujuy",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/Jujuy"
                },
                {
                    "id": "America/Argentina/La_Rioja",
                    "name": "America/Argentina/La_Rioja",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/La_Rioja"
                },
                {
                    "id": "America/Argentina/Mendoza",
                    "name": "America/Argentina/Mendoza",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/Mendoza"
                },
                {
                    "id": "America/Argentina/Rio_Gallegos",
                    "name": "America/Argentina/Rio_Gallegos",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/Rio_Gallegos"
                },
                {
                    "id": "America/Argentina/Salta",
                    "name": "America/Argentina/Salta",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/Salta"
                },
                {
                    "id": "America/Argentina/San_Juan",
                    "name": "America/Argentina/San_Juan",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/San_Juan"
                },
                {
                    "id": "America/Argentina/San_Luis",
                    "name": "America/Argentina/San_Luis",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/San_Luis"
                },
                {
                    "id": "America/Argentina/Tucuman",
                    "name": "America/Argentina/Tucuman",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/Tucuman"
                },
                {
                    "id": "America/Argentina/Ushuaia",
                    "name": "America/Argentina/Ushuaia",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Argentina/Ushuaia"
                },
                {
                    "id": "America/Aruba",
                    "name": "America/Aruba",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Aruba"
                },
                {
                    "id": "America/Asuncion",
                    "name": "America/Asuncion",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Asuncion"
                },
                {
                    "id": "America/Atikokan",
                    "name": "America/Atikokan",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Atikokan"
                },
                {
                    "id": "America/Bahia",
                    "name": "America/Bahia",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Bahia"
                },
                {
                    "id": "America/Bahia_Banderas",
                    "name": "America/Bahia_Banderas",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Bahia_Banderas"
                },
                {
                    "id": "America/Barbados",
                    "name": "America/Barbados",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Barbados"
                },
                {
                    "id": "America/Belem",
                    "name": "America/Belem",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Belem"
                },
                {
                    "id": "America/Belize",
                    "name": "America/Belize",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Belize"
                },
                {
                    "id": "America/Blanc-Sablon",
                    "name": "America/Blanc-Sablon",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Blanc-Sablon"
                },
                {
                    "id": "America/Boa_Vista",
                    "name": "America/Boa_Vista",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Boa_Vista"
                },
                {
                    "id": "America/Bogota",
                    "name": "America/Bogota",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Bogota"
                },
                {
                    "id": "America/Boise",
                    "name": "America/Boise",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Boise"
                },
                {
                    "id": "America/Cambridge_Bay",
                    "name": "America/Cambridge_Bay",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Cambridge_Bay"
                },
                {
                    "id": "America/Campo_Grande",
                    "name": "America/Campo_Grande",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Campo_Grande"
                },
                {
                    "id": "America/Cancun",
                    "name": "America/Cancun",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Cancun"
                },
                {
                    "id": "America/Caracas",
                    "name": "America/Caracas",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Caracas"
                },
                {
                    "id": "America/Cayenne",
                    "name": "America/Cayenne",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Cayenne"
                },
                {
                    "id": "America/Cayman",
                    "name": "America/Cayman",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Cayman"
                },
                {
                    "id": "America/Chicago",
                    "name": "America/Chicago",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Chicago"
                },
                {
                    "id": "America/Chihuahua",
                    "name": "America/Chihuahua",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Chihuahua"
                },
                {
                    "id": "America/Ciudad_Juarez",
                    "name": "America/Ciudad_Juarez",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Ciudad_Juarez"
                },
                {
                    "id": "America/Costa_Rica",
                    "name": "America/Costa_Rica",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Costa_Rica"
                },
                {
                    "id": "America/Creston",
                    "name": "America/Creston",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Creston"
                },
                {
                    "id": "America/Cuiaba",
                    "name": "America/Cuiaba",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Cuiaba"
                },
                {
                    "id": "America/Curacao",
                    "name": "America/Curacao",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Curacao"
                },
                {
                    "id": "America/Danmarkshavn",
                    "name": "America/Danmarkshavn",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) America/Danmarkshavn"
                },
                {
                    "id": "America/Dawson",
                    "name": "America/Dawson",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Dawson"
                },
                {
                    "id": "America/Dawson_Creek",
                    "name": "America/Dawson_Creek",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Dawson_Creek"
                },
                {
                    "id": "America/Denver",
                    "name": "America/Denver",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Denver"
                },
                {
                    "id": "America/Detroit",
                    "name": "America/Detroit",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Detroit"
                },
                {
                    "id": "America/Dominica",
                    "name": "America/Dominica",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Dominica"
                },
                {
                    "id": "America/Edmonton",
                    "name": "America/Edmonton",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Edmonton"
                },
                {
                    "id": "America/Eirunepe",
                    "name": "America/Eirunepe",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Eirunepe"
                },
                {
                    "id": "America/El_Salvador",
                    "name": "America/El_Salvador",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/El_Salvador"
                },
                {
                    "id": "America/Fort_Nelson",
                    "name": "America/Fort_Nelson",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Fort_Nelson"
                },
                {
                    "id": "America/Fortaleza",
                    "name": "America/Fortaleza",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Fortaleza"
                },
                {
                    "id": "America/Glace_Bay",
                    "name": "America/Glace_Bay",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Glace_Bay"
                },
                {
                    "id": "America/Goose_Bay",
                    "name": "America/Goose_Bay",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Goose_Bay"
                },
                {
                    "id": "America/Grand_Turk",
                    "name": "America/Grand_Turk",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Grand_Turk"
                },
                {
                    "id": "America/Grenada",
                    "name": "America/Grenada",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Grenada"
                },
                {
                    "id": "America/Guadeloupe",
                    "name": "America/Guadeloupe",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Guadeloupe"
                },
                {
                    "id": "America/Guatemala",
                    "name": "America/Guatemala",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Guatemala"
                },
                {
                    "id": "America/Guayaquil",
                    "name": "America/Guayaquil",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Guayaquil"
                },
                {
                    "id": "America/Guyana",
                    "name": "America/Guyana",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Guyana"
                },
                {
                    "id": "America/Halifax",
                    "name": "America/Halifax",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Halifax"
                },
                {
                    "id": "America/Havana",
                    "name": "America/Havana",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Havana"
                },
                {
                    "id": "America/Hermosillo",
                    "name": "America/Hermosillo",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Hermosillo"
                },
                {
                    "id": "America/Indiana/Indianapolis",
                    "name": "America/Indiana/Indianapolis",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Indiana/Indianapolis"
                },
                {
                    "id": "America/Indiana/Knox",
                    "name": "America/Indiana/Knox",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Indiana/Knox"
                },
                {
                    "id": "America/Indiana/Marengo",
                    "name": "America/Indiana/Marengo",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Indiana/Marengo"
                },
                {
                    "id": "America/Indiana/Petersburg",
                    "name": "America/Indiana/Petersburg",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Indiana/Petersburg"
                },
                {
                    "id": "America/Indiana/Tell_City",
                    "name": "America/Indiana/Tell_City",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Indiana/Tell_City"
                },
                {
                    "id": "America/Indiana/Vevay",
                    "name": "America/Indiana/Vevay",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Indiana/Vevay"
                },
                {
                    "id": "America/Indiana/Vincennes",
                    "name": "America/Indiana/Vincennes",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Indiana/Vincennes"
                },
                {
                    "id": "America/Indiana/Winamac",
                    "name": "America/Indiana/Winamac",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Indiana/Winamac"
                },
                {
                    "id": "America/Inuvik",
                    "name": "America/Inuvik",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Inuvik"
                },
                {
                    "id": "America/Iqaluit",
                    "name": "America/Iqaluit",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Iqaluit"
                },
                {
                    "id": "America/Jamaica",
                    "name": "America/Jamaica",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Jamaica"
                },
                {
                    "id": "America/Juneau",
                    "name": "America/Juneau",
                    "offset": "-08:00",
                    "label": "(UTC-08:00) America/Juneau"
                },
                {
                    "id": "America/Kentucky/Louisville",
                    "name": "America/Kentucky/Louisville",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Kentucky/Louisville"
                },
                {
                    "id": "America/Kentucky/Monticello",
                    "name": "America/Kentucky/Monticello",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Kentucky/Monticello"
                },
                {
                    "id": "America/Kralendijk",
                    "name": "America/Kralendijk",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Kralendijk"
                },
                {
                    "id": "America/La_Paz",
                    "name": "America/La_Paz",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/La_Paz"
                },
                {
                    "id": "America/Lima",
                    "name": "America/Lima",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Lima"
                },
                {
                    "id": "America/Los_Angeles",
                    "name": "America/Los_Angeles",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Los_Angeles"
                },
                {
                    "id": "America/Lower_Princes",
                    "name": "America/Lower_Princes",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Lower_Princes"
                },
                {
                    "id": "America/Maceio",
                    "name": "America/Maceio",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Maceio"
                },
                {
                    "id": "America/Managua",
                    "name": "America/Managua",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Managua"
                },
                {
                    "id": "America/Manaus",
                    "name": "America/Manaus",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Manaus"
                },
                {
                    "id": "America/Marigot",
                    "name": "America/Marigot",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Marigot"
                },
                {
                    "id": "America/Martinique",
                    "name": "America/Martinique",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Martinique"
                },
                {
                    "id": "America/Matamoros",
                    "name": "America/Matamoros",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Matamoros"
                },
                {
                    "id": "America/Mazatlan",
                    "name": "America/Mazatlan",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Mazatlan"
                },
                {
                    "id": "America/Menominee",
                    "name": "America/Menominee",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Menominee"
                },
                {
                    "id": "America/Merida",
                    "name": "America/Merida",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Merida"
                },
                {
                    "id": "America/Metlakatla",
                    "name": "America/Metlakatla",
                    "offset": "-08:00",
                    "label": "(UTC-08:00) America/Metlakatla"
                },
                {
                    "id": "America/Mexico_City",
                    "name": "America/Mexico_City",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Mexico_City"
                },
                {
                    "id": "America/Miquelon",
                    "name": "America/Miquelon",
                    "offset": "-02:00",
                    "label": "(UTC-02:00) America/Miquelon"
                },
                {
                    "id": "America/Moncton",
                    "name": "America/Moncton",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Moncton"
                },
                {
                    "id": "America/Monterrey",
                    "name": "America/Monterrey",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Monterrey"
                },
                {
                    "id": "America/Montevideo",
                    "name": "America/Montevideo",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Montevideo"
                },
                {
                    "id": "America/Montserrat",
                    "name": "America/Montserrat",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Montserrat"
                },
                {
                    "id": "America/Nassau",
                    "name": "America/Nassau",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Nassau"
                },
                {
                    "id": "America/New_York",
                    "name": "America/New_York",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/New_York"
                },
                {
                    "id": "America/Nome",
                    "name": "America/Nome",
                    "offset": "-08:00",
                    "label": "(UTC-08:00) America/Nome"
                },
                {
                    "id": "America/Noronha",
                    "name": "America/Noronha",
                    "offset": "-02:00",
                    "label": "(UTC-02:00) America/Noronha"
                },
                {
                    "id": "America/North_Dakota/Beulah",
                    "name": "America/North_Dakota/Beulah",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/North_Dakota/Beulah"
                },
                {
                    "id": "America/North_Dakota/Center",
                    "name": "America/North_Dakota/Center",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/North_Dakota/Center"
                },
                {
                    "id": "America/North_Dakota/New_Salem",
                    "name": "America/North_Dakota/New_Salem",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/North_Dakota/New_Salem"
                },
                {
                    "id": "America/Nuuk",
                    "name": "America/Nuuk",
                    "offset": "-01:00",
                    "label": "(UTC-01:00) America/Nuuk"
                },
                {
                    "id": "America/Ojinaga",
                    "name": "America/Ojinaga",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Ojinaga"
                },
                {
                    "id": "America/Panama",
                    "name": "America/Panama",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Panama"
                },
                {
                    "id": "America/Paramaribo",
                    "name": "America/Paramaribo",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Paramaribo"
                },
                {
                    "id": "America/Phoenix",
                    "name": "America/Phoenix",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Phoenix"
                },
                {
                    "id": "America/Port-au-Prince",
                    "name": "America/Port-au-Prince",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Port-au-Prince"
                },
                {
                    "id": "America/Port_of_Spain",
                    "name": "America/Port_of_Spain",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Port_of_Spain"
                },
                {
                    "id": "America/Porto_Velho",
                    "name": "America/Porto_Velho",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Porto_Velho"
                },
                {
                    "id": "America/Puerto_Rico",
                    "name": "America/Puerto_Rico",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Puerto_Rico"
                },
                {
                    "id": "America/Punta_Arenas",
                    "name": "America/Punta_Arenas",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Punta_Arenas"
                },
                {
                    "id": "America/Rankin_Inlet",
                    "name": "America/Rankin_Inlet",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Rankin_Inlet"
                },
                {
                    "id": "America/Recife",
                    "name": "America/Recife",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Recife"
                },
                {
                    "id": "America/Regina",
                    "name": "America/Regina",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Regina"
                },
                {
                    "id": "America/Resolute",
                    "name": "America/Resolute",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Resolute"
                },
                {
                    "id": "America/Rio_Branco",
                    "name": "America/Rio_Branco",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Rio_Branco"
                },
                {
                    "id": "America/Santarem",
                    "name": "America/Santarem",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Santarem"
                },
                {
                    "id": "America/Santiago",
                    "name": "America/Santiago",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Santiago"
                },
                {
                    "id": "America/Santo_Domingo",
                    "name": "America/Santo_Domingo",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Santo_Domingo"
                },
                {
                    "id": "America/Sao_Paulo",
                    "name": "America/Sao_Paulo",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Sao_Paulo"
                },
                {
                    "id": "America/Scoresbysund",
                    "name": "America/Scoresbysund",
                    "offset": "-01:00",
                    "label": "(UTC-01:00) America/Scoresbysund"
                },
                {
                    "id": "America/Sitka",
                    "name": "America/Sitka",
                    "offset": "-08:00",
                    "label": "(UTC-08:00) America/Sitka"
                },
                {
                    "id": "America/St_Barthelemy",
                    "name": "America/St_Barthelemy",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/St_Barthelemy"
                },
                {
                    "id": "America/St_Johns",
                    "name": "America/St_Johns",
                    "offset": "-02:30",
                    "label": "(UTC-02:30) America/St_Johns"
                },
                {
                    "id": "America/St_Kitts",
                    "name": "America/St_Kitts",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/St_Kitts"
                },
                {
                    "id": "America/St_Lucia",
                    "name": "America/St_Lucia",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/St_Lucia"
                },
                {
                    "id": "America/St_Thomas",
                    "name": "America/St_Thomas",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/St_Thomas"
                },
                {
                    "id": "America/St_Vincent",
                    "name": "America/St_Vincent",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/St_Vincent"
                },
                {
                    "id": "America/Swift_Current",
                    "name": "America/Swift_Current",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Swift_Current"
                },
                {
                    "id": "America/Tegucigalpa",
                    "name": "America/Tegucigalpa",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) America/Tegucigalpa"
                },
                {
                    "id": "America/Thule",
                    "name": "America/Thule",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) America/Thule"
                },
                {
                    "id": "America/Tijuana",
                    "name": "America/Tijuana",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Tijuana"
                },
                {
                    "id": "America/Toronto",
                    "name": "America/Toronto",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Toronto"
                },
                {
                    "id": "America/Tortola",
                    "name": "America/Tortola",
                    "offset": "-04:00",
                    "label": "(UTC-04:00) America/Tortola"
                },
                {
                    "id": "America/Vancouver",
                    "name": "America/Vancouver",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Vancouver"
                },
                {
                    "id": "America/Whitehorse",
                    "name": "America/Whitehorse",
                    "offset": "-07:00",
                    "label": "(UTC-07:00) America/Whitehorse"
                },
                {
                    "id": "America/Winnipeg",
                    "name": "America/Winnipeg",
                    "offset": "-05:00",
                    "label": "(UTC-05:00) America/Winnipeg"
                },
                {
                    "id": "America/Yakutat",
                    "name": "America/Yakutat",
                    "offset": "-08:00",
                    "label": "(UTC-08:00) America/Yakutat"
                }
            ],
            "Antarctica": [
                {
                    "id": "Antarctica/Casey",
                    "name": "Antarctica/Casey",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Antarctica/Casey"
                },
                {
                    "id": "Antarctica/Davis",
                    "name": "Antarctica/Davis",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Antarctica/Davis"
                },
                {
                    "id": "Antarctica/DumontDUrville",
                    "name": "Antarctica/DumontDUrville",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Antarctica/DumontDUrville"
                },
                {
                    "id": "Antarctica/Macquarie",
                    "name": "Antarctica/Macquarie",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Antarctica/Macquarie"
                },
                {
                    "id": "Antarctica/Mawson",
                    "name": "Antarctica/Mawson",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Antarctica/Mawson"
                },
                {
                    "id": "Antarctica/McMurdo",
                    "name": "Antarctica/McMurdo",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Antarctica/McMurdo"
                },
                {
                    "id": "Antarctica/Palmer",
                    "name": "Antarctica/Palmer",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) Antarctica/Palmer"
                },
                {
                    "id": "Antarctica/Rothera",
                    "name": "Antarctica/Rothera",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) Antarctica/Rothera"
                },
                {
                    "id": "Antarctica/Syowa",
                    "name": "Antarctica/Syowa",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Antarctica/Syowa"
                },
                {
                    "id": "Antarctica/Troll",
                    "name": "Antarctica/Troll",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Antarctica/Troll"
                },
                {
                    "id": "Antarctica/Vostok",
                    "name": "Antarctica/Vostok",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Antarctica/Vostok"
                }
            ],
            "Arctic": [
                {
                    "id": "Arctic/Longyearbyen",
                    "name": "Arctic/Longyearbyen",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Arctic/Longyearbyen"
                }
            ],
            "Asia": [
                {
                    "id": "Asia/Aden",
                    "name": "Asia/Aden",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Aden"
                },
                {
                    "id": "Asia/Almaty",
                    "name": "Asia/Almaty",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Almaty"
                },
                {
                    "id": "Asia/Amman",
                    "name": "Asia/Amman",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Amman"
                },
                {
                    "id": "Asia/Anadyr",
                    "name": "Asia/Anadyr",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Asia/Anadyr"
                },
                {
                    "id": "Asia/Aqtau",
                    "name": "Asia/Aqtau",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Aqtau"
                },
                {
                    "id": "Asia/Aqtobe",
                    "name": "Asia/Aqtobe",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Aqtobe"
                },
                {
                    "id": "Asia/Ashgabat",
                    "name": "Asia/Ashgabat",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Ashgabat"
                },
                {
                    "id": "Asia/Atyrau",
                    "name": "Asia/Atyrau",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Atyrau"
                },
                {
                    "id": "Asia/Baghdad",
                    "name": "Asia/Baghdad",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Baghdad"
                },
                {
                    "id": "Asia/Bahrain",
                    "name": "Asia/Bahrain",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Bahrain"
                },
                {
                    "id": "Asia/Baku",
                    "name": "Asia/Baku",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Asia/Baku"
                },
                {
                    "id": "Asia/Bangkok",
                    "name": "Asia/Bangkok",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Bangkok"
                },
                {
                    "id": "Asia/Barnaul",
                    "name": "Asia/Barnaul",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Barnaul"
                },
                {
                    "id": "Asia/Beirut",
                    "name": "Asia/Beirut",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Beirut"
                },
                {
                    "id": "Asia/Bishkek",
                    "name": "Asia/Bishkek",
                    "offset": "+06:00",
                    "label": "(UTC+06:00) Asia/Bishkek"
                },
                {
                    "id": "Asia/Brunei",
                    "name": "Asia/Brunei",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Brunei"
                },
                {
                    "id": "Asia/Chita",
                    "name": "Asia/Chita",
                    "offset": "+09:00",
                    "label": "(UTC+09:00) Asia/Chita"
                },
                {
                    "id": "Asia/Colombo",
                    "name": "Asia/Colombo",
                    "offset": "+05:30",
                    "label": "(UTC+05:30) Asia/Colombo"
                },
                {
                    "id": "Asia/Damascus",
                    "name": "Asia/Damascus",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Damascus"
                },
                {
                    "id": "Asia/Dhaka",
                    "name": "Asia/Dhaka",
                    "offset": "+06:00",
                    "label": "(UTC+06:00) Asia/Dhaka"
                },
                {
                    "id": "Asia/Dili",
                    "name": "Asia/Dili",
                    "offset": "+09:00",
                    "label": "(UTC+09:00) Asia/Dili"
                },
                {
                    "id": "Asia/Dubai",
                    "name": "Asia/Dubai",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Asia/Dubai"
                },
                {
                    "id": "Asia/Dushanbe",
                    "name": "Asia/Dushanbe",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Dushanbe"
                },
                {
                    "id": "Asia/Famagusta",
                    "name": "Asia/Famagusta",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Famagusta"
                },
                {
                    "id": "Asia/Gaza",
                    "name": "Asia/Gaza",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Gaza"
                },
                {
                    "id": "Asia/Hebron",
                    "name": "Asia/Hebron",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Hebron"
                },
                {
                    "id": "Asia/Ho_Chi_Minh",
                    "name": "Asia/Ho_Chi_Minh",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Ho_Chi_Minh"
                },
                {
                    "id": "Asia/Hong_Kong",
                    "name": "Asia/Hong_Kong",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Hong_Kong"
                },
                {
                    "id": "Asia/Hovd",
                    "name": "Asia/Hovd",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Hovd"
                },
                {
                    "id": "Asia/Irkutsk",
                    "name": "Asia/Irkutsk",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Irkutsk"
                },
                {
                    "id": "Asia/Jakarta",
                    "name": "Asia/Jakarta",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Jakarta"
                },
                {
                    "id": "Asia/Jayapura",
                    "name": "Asia/Jayapura",
                    "offset": "+09:00",
                    "label": "(UTC+09:00) Asia/Jayapura"
                },
                {
                    "id": "Asia/Jerusalem",
                    "name": "Asia/Jerusalem",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Jerusalem"
                },
                {
                    "id": "Asia/Kabul",
                    "name": "Asia/Kabul",
                    "offset": "+04:30",
                    "label": "(UTC+04:30) Asia/Kabul"
                },
                {
                    "id": "Asia/Kamchatka",
                    "name": "Asia/Kamchatka",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Asia/Kamchatka"
                },
                {
                    "id": "Asia/Karachi",
                    "name": "Asia/Karachi",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Karachi"
                },
                {
                    "id": "Asia/Kathmandu",
                    "name": "Asia/Kathmandu",
                    "offset": "+05:45",
                    "label": "(UTC+05:45) Asia/Kathmandu"
                },
                {
                    "id": "Asia/Khandyga",
                    "name": "Asia/Khandyga",
                    "offset": "+09:00",
                    "label": "(UTC+09:00) Asia/Khandyga"
                },
                {
                    "id": "Asia/Kolkata",
                    "name": "Asia/Kolkata",
                    "offset": "+05:30",
                    "label": "(UTC+05:30) Asia/Kolkata"
                },
                {
                    "id": "Asia/Krasnoyarsk",
                    "name": "Asia/Krasnoyarsk",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Krasnoyarsk"
                },
                {
                    "id": "Asia/Kuala_Lumpur",
                    "name": "Asia/Kuala_Lumpur",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Kuala_Lumpur"
                },
                {
                    "id": "Asia/Kuching",
                    "name": "Asia/Kuching",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Kuching"
                },
                {
                    "id": "Asia/Kuwait",
                    "name": "Asia/Kuwait",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Kuwait"
                },
                {
                    "id": "Asia/Macau",
                    "name": "Asia/Macau",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Macau"
                },
                {
                    "id": "Asia/Magadan",
                    "name": "Asia/Magadan",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Asia/Magadan"
                },
                {
                    "id": "Asia/Makassar",
                    "name": "Asia/Makassar",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Makassar"
                },
                {
                    "id": "Asia/Manila",
                    "name": "Asia/Manila",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Manila"
                },
                {
                    "id": "Asia/Muscat",
                    "name": "Asia/Muscat",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Asia/Muscat"
                },
                {
                    "id": "Asia/Nicosia",
                    "name": "Asia/Nicosia",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Nicosia"
                },
                {
                    "id": "Asia/Novokuznetsk",
                    "name": "Asia/Novokuznetsk",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Novokuznetsk"
                },
                {
                    "id": "Asia/Novosibirsk",
                    "name": "Asia/Novosibirsk",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Novosibirsk"
                },
                {
                    "id": "Asia/Omsk",
                    "name": "Asia/Omsk",
                    "offset": "+06:00",
                    "label": "(UTC+06:00) Asia/Omsk"
                },
                {
                    "id": "Asia/Oral",
                    "name": "Asia/Oral",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Oral"
                },
                {
                    "id": "Asia/Phnom_Penh",
                    "name": "Asia/Phnom_Penh",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Phnom_Penh"
                },
                {
                    "id": "Asia/Pontianak",
                    "name": "Asia/Pontianak",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Pontianak"
                },
                {
                    "id": "Asia/Pyongyang",
                    "name": "Asia/Pyongyang",
                    "offset": "+09:00",
                    "label": "(UTC+09:00) Asia/Pyongyang"
                },
                {
                    "id": "Asia/Qatar",
                    "name": "Asia/Qatar",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Qatar"
                },
                {
                    "id": "Asia/Qostanay",
                    "name": "Asia/Qostanay",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Qostanay"
                },
                {
                    "id": "Asia/Qyzylorda",
                    "name": "Asia/Qyzylorda",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Qyzylorda"
                },
                {
                    "id": "Asia/Riyadh",
                    "name": "Asia/Riyadh",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Asia/Riyadh"
                },
                {
                    "id": "Asia/Sakhalin",
                    "name": "Asia/Sakhalin",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Asia/Sakhalin"
                },
                {
                    "id": "Asia/Samarkand",
                    "name": "Asia/Samarkand",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Samarkand"
                },
                {
                    "id": "Asia/Seoul",
                    "name": "Asia/Seoul",
                    "offset": "+09:00",
                    "label": "(UTC+09:00) Asia/Seoul"
                },
                {
                    "id": "Asia/Shanghai",
                    "name": "Asia/Shanghai",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Shanghai"
                },
                {
                    "id": "Asia/Singapore",
                    "name": "Asia/Singapore",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Singapore"
                },
                {
                    "id": "Asia/Srednekolymsk",
                    "name": "Asia/Srednekolymsk",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Asia/Srednekolymsk"
                },
                {
                    "id": "Asia/Taipei",
                    "name": "Asia/Taipei",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Taipei"
                },
                {
                    "id": "Asia/Tashkent",
                    "name": "Asia/Tashkent",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Tashkent"
                },
                {
                    "id": "Asia/Tbilisi",
                    "name": "Asia/Tbilisi",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Asia/Tbilisi"
                },
                {
                    "id": "Asia/Tehran",
                    "name": "Asia/Tehran",
                    "offset": "+03:30",
                    "label": "(UTC+03:30) Asia/Tehran"
                },
                {
                    "id": "Asia/Thimphu",
                    "name": "Asia/Thimphu",
                    "offset": "+06:00",
                    "label": "(UTC+06:00) Asia/Thimphu"
                },
                {
                    "id": "Asia/Tokyo",
                    "name": "Asia/Tokyo",
                    "offset": "+09:00",
                    "label": "(UTC+09:00) Asia/Tokyo"
                },
                {
                    "id": "Asia/Tomsk",
                    "name": "Asia/Tomsk",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Tomsk"
                },
                {
                    "id": "Asia/Ulaanbaatar",
                    "name": "Asia/Ulaanbaatar",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Asia/Ulaanbaatar"
                },
                {
                    "id": "Asia/Urumqi",
                    "name": "Asia/Urumqi",
                    "offset": "+06:00",
                    "label": "(UTC+06:00) Asia/Urumqi"
                },
                {
                    "id": "Asia/Ust-Nera",
                    "name": "Asia/Ust-Nera",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Asia/Ust-Nera"
                },
                {
                    "id": "Asia/Vientiane",
                    "name": "Asia/Vientiane",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Asia/Vientiane"
                },
                {
                    "id": "Asia/Vladivostok",
                    "name": "Asia/Vladivostok",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Asia/Vladivostok"
                },
                {
                    "id": "Asia/Yakutsk",
                    "name": "Asia/Yakutsk",
                    "offset": "+09:00",
                    "label": "(UTC+09:00) Asia/Yakutsk"
                },
                {
                    "id": "Asia/Yangon",
                    "name": "Asia/Yangon",
                    "offset": "+06:30",
                    "label": "(UTC+06:30) Asia/Yangon"
                },
                {
                    "id": "Asia/Yekaterinburg",
                    "name": "Asia/Yekaterinburg",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Asia/Yekaterinburg"
                },
                {
                    "id": "Asia/Yerevan",
                    "name": "Asia/Yerevan",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Asia/Yerevan"
                }
            ],
            "Atlantic": [
                {
                    "id": "Atlantic/Azores",
                    "name": "Atlantic/Azores",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Atlantic/Azores"
                },
                {
                    "id": "Atlantic/Bermuda",
                    "name": "Atlantic/Bermuda",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) Atlantic/Bermuda"
                },
                {
                    "id": "Atlantic/Canary",
                    "name": "Atlantic/Canary",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Atlantic/Canary"
                },
                {
                    "id": "Atlantic/Cape_Verde",
                    "name": "Atlantic/Cape_Verde",
                    "offset": "-01:00",
                    "label": "(UTC-01:00) Atlantic/Cape_Verde"
                },
                {
                    "id": "Atlantic/Faroe",
                    "name": "Atlantic/Faroe",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Atlantic/Faroe"
                },
                {
                    "id": "Atlantic/Madeira",
                    "name": "Atlantic/Madeira",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Atlantic/Madeira"
                },
                {
                    "id": "Atlantic/Reykjavik",
                    "name": "Atlantic/Reykjavik",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Atlantic/Reykjavik"
                },
                {
                    "id": "Atlantic/South_Georgia",
                    "name": "Atlantic/South_Georgia",
                    "offset": "-02:00",
                    "label": "(UTC-02:00) Atlantic/South_Georgia"
                },
                {
                    "id": "Atlantic/St_Helena",
                    "name": "Atlantic/St_Helena",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) Atlantic/St_Helena"
                },
                {
                    "id": "Atlantic/Stanley",
                    "name": "Atlantic/Stanley",
                    "offset": "-03:00",
                    "label": "(UTC-03:00) Atlantic/Stanley"
                }
            ],
            "Australia": [
                {
                    "id": "Australia/Adelaide",
                    "name": "Australia/Adelaide",
                    "offset": "+09:30",
                    "label": "(UTC+09:30) Australia/Adelaide"
                },
                {
                    "id": "Australia/Brisbane",
                    "name": "Australia/Brisbane",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Australia/Brisbane"
                },
                {
                    "id": "Australia/Broken_Hill",
                    "name": "Australia/Broken_Hill",
                    "offset": "+09:30",
                    "label": "(UTC+09:30) Australia/Broken_Hill"
                },
                {
                    "id": "Australia/Darwin",
                    "name": "Australia/Darwin",
                    "offset": "+09:30",
                    "label": "(UTC+09:30) Australia/Darwin"
                },
                {
                    "id": "Australia/Eucla",
                    "name": "Australia/Eucla",
                    "offset": "+08:45",
                    "label": "(UTC+08:45) Australia/Eucla"
                },
                {
                    "id": "Australia/Hobart",
                    "name": "Australia/Hobart",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Australia/Hobart"
                },
                {
                    "id": "Australia/Lindeman",
                    "name": "Australia/Lindeman",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Australia/Lindeman"
                },
                {
                    "id": "Australia/Lord_Howe",
                    "name": "Australia/Lord_Howe",
                    "offset": "+10:30",
                    "label": "(UTC+10:30) Australia/Lord_Howe"
                },
                {
                    "id": "Australia/Melbourne",
                    "name": "Australia/Melbourne",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Australia/Melbourne"
                },
                {
                    "id": "Australia/Perth",
                    "name": "Australia/Perth",
                    "offset": "+08:00",
                    "label": "(UTC+08:00) Australia/Perth"
                },
                {
                    "id": "Australia/Sydney",
                    "name": "Australia/Sydney",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Australia/Sydney"
                }
            ],
            "Europe": [
                {
                    "id": "Europe/Amsterdam",
                    "name": "Europe/Amsterdam",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Amsterdam"
                },
                {
                    "id": "Europe/Andorra",
                    "name": "Europe/Andorra",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Andorra"
                },
                {
                    "id": "Europe/Astrakhan",
                    "name": "Europe/Astrakhan",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Europe/Astrakhan"
                },
                {
                    "id": "Europe/Athens",
                    "name": "Europe/Athens",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Athens"
                },
                {
                    "id": "Europe/Belgrade",
                    "name": "Europe/Belgrade",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Belgrade"
                },
                {
                    "id": "Europe/Berlin",
                    "name": "Europe/Berlin",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Berlin"
                },
                {
                    "id": "Europe/Bratislava",
                    "name": "Europe/Bratislava",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Bratislava"
                },
                {
                    "id": "Europe/Brussels",
                    "name": "Europe/Brussels",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Brussels"
                },
                {
                    "id": "Europe/Bucharest",
                    "name": "Europe/Bucharest",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Bucharest"
                },
                {
                    "id": "Europe/Budapest",
                    "name": "Europe/Budapest",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Budapest"
                },
                {
                    "id": "Europe/Busingen",
                    "name": "Europe/Busingen",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Busingen"
                },
                {
                    "id": "Europe/Chisinau",
                    "name": "Europe/Chisinau",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Chisinau"
                },
                {
                    "id": "Europe/Copenhagen",
                    "name": "Europe/Copenhagen",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Copenhagen"
                },
                {
                    "id": "Europe/Dublin",
                    "name": "Europe/Dublin",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Europe/Dublin"
                },
                {
                    "id": "Europe/Gibraltar",
                    "name": "Europe/Gibraltar",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Gibraltar"
                },
                {
                    "id": "Europe/Guernsey",
                    "name": "Europe/Guernsey",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Europe/Guernsey"
                },
                {
                    "id": "Europe/Helsinki",
                    "name": "Europe/Helsinki",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Helsinki"
                },
                {
                    "id": "Europe/Isle_of_Man",
                    "name": "Europe/Isle_of_Man",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Europe/Isle_of_Man"
                },
                {
                    "id": "Europe/Istanbul",
                    "name": "Europe/Istanbul",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Istanbul"
                },
                {
                    "id": "Europe/Jersey",
                    "name": "Europe/Jersey",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Europe/Jersey"
                },
                {
                    "id": "Europe/Kaliningrad",
                    "name": "Europe/Kaliningrad",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Kaliningrad"
                },
                {
                    "id": "Europe/Kirov",
                    "name": "Europe/Kirov",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Kirov"
                },
                {
                    "id": "Europe/Kyiv",
                    "name": "Europe/Kyiv",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Kyiv"
                },
                {
                    "id": "Europe/Lisbon",
                    "name": "Europe/Lisbon",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Europe/Lisbon"
                },
                {
                    "id": "Europe/Ljubljana",
                    "name": "Europe/Ljubljana",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Ljubljana"
                },
                {
                    "id": "Europe/London",
                    "name": "Europe/London",
                    "offset": "+01:00",
                    "label": "(UTC+01:00) Europe/London"
                },
                {
                    "id": "Europe/Luxembourg",
                    "name": "Europe/Luxembourg",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Luxembourg"
                },
                {
                    "id": "Europe/Madrid",
                    "name": "Europe/Madrid",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Madrid"
                },
                {
                    "id": "Europe/Malta",
                    "name": "Europe/Malta",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Malta"
                },
                {
                    "id": "Europe/Mariehamn",
                    "name": "Europe/Mariehamn",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Mariehamn"
                },
                {
                    "id": "Europe/Minsk",
                    "name": "Europe/Minsk",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Minsk"
                },
                {
                    "id": "Europe/Monaco",
                    "name": "Europe/Monaco",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Monaco"
                },
                {
                    "id": "Europe/Moscow",
                    "name": "Europe/Moscow",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Moscow"
                },
                {
                    "id": "Europe/Oslo",
                    "name": "Europe/Oslo",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Oslo"
                },
                {
                    "id": "Europe/Paris",
                    "name": "Europe/Paris",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Paris"
                },
                {
                    "id": "Europe/Podgorica",
                    "name": "Europe/Podgorica",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Podgorica"
                },
                {
                    "id": "Europe/Prague",
                    "name": "Europe/Prague",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Prague"
                },
                {
                    "id": "Europe/Riga",
                    "name": "Europe/Riga",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Riga"
                },
                {
                    "id": "Europe/Rome",
                    "name": "Europe/Rome",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Rome"
                },
                {
                    "id": "Europe/Samara",
                    "name": "Europe/Samara",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Europe/Samara"
                },
                {
                    "id": "Europe/San_Marino",
                    "name": "Europe/San_Marino",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/San_Marino"
                },
                {
                    "id": "Europe/Sarajevo",
                    "name": "Europe/Sarajevo",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Sarajevo"
                },
                {
                    "id": "Europe/Saratov",
                    "name": "Europe/Saratov",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Europe/Saratov"
                },
                {
                    "id": "Europe/Simferopol",
                    "name": "Europe/Simferopol",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Simferopol"
                },
                {
                    "id": "Europe/Skopje",
                    "name": "Europe/Skopje",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Skopje"
                },
                {
                    "id": "Europe/Sofia",
                    "name": "Europe/Sofia",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Sofia"
                },
                {
                    "id": "Europe/Stockholm",
                    "name": "Europe/Stockholm",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Stockholm"
                },
                {
                    "id": "Europe/Tallinn",
                    "name": "Europe/Tallinn",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Tallinn"
                },
                {
                    "id": "Europe/Tirane",
                    "name": "Europe/Tirane",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Tirane"
                },
                {
                    "id": "Europe/Ulyanovsk",
                    "name": "Europe/Ulyanovsk",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Europe/Ulyanovsk"
                },
                {
                    "id": "Europe/Vaduz",
                    "name": "Europe/Vaduz",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Vaduz"
                },
                {
                    "id": "Europe/Vatican",
                    "name": "Europe/Vatican",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Vatican"
                },
                {
                    "id": "Europe/Vienna",
                    "name": "Europe/Vienna",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Vienna"
                },
                {
                    "id": "Europe/Vilnius",
                    "name": "Europe/Vilnius",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Vilnius"
                },
                {
                    "id": "Europe/Volgograd",
                    "name": "Europe/Volgograd",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Europe/Volgograd"
                },
                {
                    "id": "Europe/Warsaw",
                    "name": "Europe/Warsaw",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Warsaw"
                },
                {
                    "id": "Europe/Zagreb",
                    "name": "Europe/Zagreb",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Zagreb"
                },
                {
                    "id": "Europe/Zurich",
                    "name": "Europe/Zurich",
                    "offset": "+02:00",
                    "label": "(UTC+02:00) Europe/Zurich"
                }
            ],
            "Indian": [
                {
                    "id": "Indian/Antananarivo",
                    "name": "Indian/Antananarivo",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Indian/Antananarivo"
                },
                {
                    "id": "Indian/Chagos",
                    "name": "Indian/Chagos",
                    "offset": "+06:00",
                    "label": "(UTC+06:00) Indian/Chagos"
                },
                {
                    "id": "Indian/Christmas",
                    "name": "Indian/Christmas",
                    "offset": "+07:00",
                    "label": "(UTC+07:00) Indian/Christmas"
                },
                {
                    "id": "Indian/Cocos",
                    "name": "Indian/Cocos",
                    "offset": "+06:30",
                    "label": "(UTC+06:30) Indian/Cocos"
                },
                {
                    "id": "Indian/Comoro",
                    "name": "Indian/Comoro",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Indian/Comoro"
                },
                {
                    "id": "Indian/Kerguelen",
                    "name": "Indian/Kerguelen",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Indian/Kerguelen"
                },
                {
                    "id": "Indian/Mahe",
                    "name": "Indian/Mahe",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Indian/Mahe"
                },
                {
                    "id": "Indian/Maldives",
                    "name": "Indian/Maldives",
                    "offset": "+05:00",
                    "label": "(UTC+05:00) Indian/Maldives"
                },
                {
                    "id": "Indian/Mauritius",
                    "name": "Indian/Mauritius",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Indian/Mauritius"
                },
                {
                    "id": "Indian/Mayotte",
                    "name": "Indian/Mayotte",
                    "offset": "+03:00",
                    "label": "(UTC+03:00) Indian/Mayotte"
                },
                {
                    "id": "Indian/Reunion",
                    "name": "Indian/Reunion",
                    "offset": "+04:00",
                    "label": "(UTC+04:00) Indian/Reunion"
                }
            ],
            "Pacific": [
                {
                    "id": "Pacific/Apia",
                    "name": "Pacific/Apia",
                    "offset": "+13:00",
                    "label": "(UTC+13:00) Pacific/Apia"
                },
                {
                    "id": "Pacific/Auckland",
                    "name": "Pacific/Auckland",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Pacific/Auckland"
                },
                {
                    "id": "Pacific/Bougainville",
                    "name": "Pacific/Bougainville",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Pacific/Bougainville"
                },
                {
                    "id": "Pacific/Chatham",
                    "name": "Pacific/Chatham",
                    "offset": "+12:45",
                    "label": "(UTC+12:45) Pacific/Chatham"
                },
                {
                    "id": "Pacific/Chuuk",
                    "name": "Pacific/Chuuk",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Pacific/Chuuk"
                },
                {
                    "id": "Pacific/Easter",
                    "name": "Pacific/Easter",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) Pacific/Easter"
                },
                {
                    "id": "Pacific/Efate",
                    "name": "Pacific/Efate",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Pacific/Efate"
                },
                {
                    "id": "Pacific/Fakaofo",
                    "name": "Pacific/Fakaofo",
                    "offset": "+13:00",
                    "label": "(UTC+13:00) Pacific/Fakaofo"
                },
                {
                    "id": "Pacific/Fiji",
                    "name": "Pacific/Fiji",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Pacific/Fiji"
                },
                {
                    "id": "Pacific/Funafuti",
                    "name": "Pacific/Funafuti",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Pacific/Funafuti"
                },
                {
                    "id": "Pacific/Galapagos",
                    "name": "Pacific/Galapagos",
                    "offset": "-06:00",
                    "label": "(UTC-06:00) Pacific/Galapagos"
                },
                {
                    "id": "Pacific/Gambier",
                    "name": "Pacific/Gambier",
                    "offset": "-09:00",
                    "label": "(UTC-09:00) Pacific/Gambier"
                },
                {
                    "id": "Pacific/Guadalcanal",
                    "name": "Pacific/Guadalcanal",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Pacific/Guadalcanal"
                },
                {
                    "id": "Pacific/Guam",
                    "name": "Pacific/Guam",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Pacific/Guam"
                },
                {
                    "id": "Pacific/Honolulu",
                    "name": "Pacific/Honolulu",
                    "offset": "-10:00",
                    "label": "(UTC-10:00) Pacific/Honolulu"
                },
                {
                    "id": "Pacific/Kanton",
                    "name": "Pacific/Kanton",
                    "offset": "+13:00",
                    "label": "(UTC+13:00) Pacific/Kanton"
                },
                {
                    "id": "Pacific/Kiritimati",
                    "name": "Pacific/Kiritimati",
                    "offset": "+14:00",
                    "label": "(UTC+14:00) Pacific/Kiritimati"
                },
                {
                    "id": "Pacific/Kosrae",
                    "name": "Pacific/Kosrae",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Pacific/Kosrae"
                },
                {
                    "id": "Pacific/Kwajalein",
                    "name": "Pacific/Kwajalein",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Pacific/Kwajalein"
                },
                {
                    "id": "Pacific/Majuro",
                    "name": "Pacific/Majuro",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Pacific/Majuro"
                },
                {
                    "id": "Pacific/Marquesas",
                    "name": "Pacific/Marquesas",
                    "offset": "-09:30",
                    "label": "(UTC-09:30) Pacific/Marquesas"
                },
                {
                    "id": "Pacific/Midway",
                    "name": "Pacific/Midway",
                    "offset": "-11:00",
                    "label": "(UTC-11:00) Pacific/Midway"
                },
                {
                    "id": "Pacific/Nauru",
                    "name": "Pacific/Nauru",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Pacific/Nauru"
                },
                {
                    "id": "Pacific/Niue",
                    "name": "Pacific/Niue",
                    "offset": "-11:00",
                    "label": "(UTC-11:00) Pacific/Niue"
                },
                {
                    "id": "Pacific/Norfolk",
                    "name": "Pacific/Norfolk",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Pacific/Norfolk"
                },
                {
                    "id": "Pacific/Noumea",
                    "name": "Pacific/Noumea",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Pacific/Noumea"
                },
                {
                    "id": "Pacific/Pago_Pago",
                    "name": "Pacific/Pago_Pago",
                    "offset": "-11:00",
                    "label": "(UTC-11:00) Pacific/Pago_Pago"
                },
                {
                    "id": "Pacific/Palau",
                    "name": "Pacific/Palau",
                    "offset": "+09:00",
                    "label": "(UTC+09:00) Pacific/Palau"
                },
                {
                    "id": "Pacific/Pitcairn",
                    "name": "Pacific/Pitcairn",
                    "offset": "-08:00",
                    "label": "(UTC-08:00) Pacific/Pitcairn"
                },
                {
                    "id": "Pacific/Pohnpei",
                    "name": "Pacific/Pohnpei",
                    "offset": "+11:00",
                    "label": "(UTC+11:00) Pacific/Pohnpei"
                },
                {
                    "id": "Pacific/Port_Moresby",
                    "name": "Pacific/Port_Moresby",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Pacific/Port_Moresby"
                },
                {
                    "id": "Pacific/Rarotonga",
                    "name": "Pacific/Rarotonga",
                    "offset": "-10:00",
                    "label": "(UTC-10:00) Pacific/Rarotonga"
                },
                {
                    "id": "Pacific/Saipan",
                    "name": "Pacific/Saipan",
                    "offset": "+10:00",
                    "label": "(UTC+10:00) Pacific/Saipan"
                },
                {
                    "id": "Pacific/Tahiti",
                    "name": "Pacific/Tahiti",
                    "offset": "-10:00",
                    "label": "(UTC-10:00) Pacific/Tahiti"
                },
                {
                    "id": "Pacific/Tarawa",
                    "name": "Pacific/Tarawa",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Pacific/Tarawa"
                },
                {
                    "id": "Pacific/Tongatapu",
                    "name": "Pacific/Tongatapu",
                    "offset": "+13:00",
                    "label": "(UTC+13:00) Pacific/Tongatapu"
                },
                {
                    "id": "Pacific/Wake",
                    "name": "Pacific/Wake",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Pacific/Wake"
                },
                {
                    "id": "Pacific/Wallis",
                    "name": "Pacific/Wallis",
                    "offset": "+12:00",
                    "label": "(UTC+12:00) Pacific/Wallis"
                }
            ],
            "UTC": [
                {
                    "id": "UTC",
                    "name": "UTC",
                    "offset": "+00:00",
                    "label": "(UTC+00:00) UTC"
                }
            ]
        }
    }
}
 

Request      

GET api/v1/public/timezones

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/plan-required

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/plan-required" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/plan-required"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-2a41aaf590dabe3db86a4477854b32aa-9cc8aca7eade4c0d-01
x-trace-id: 2a41aaf590dabe3db86a4477854b32aa
x-span-id: 9cc8aca7eade4c0d
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 30b95b7e-9f1d-4125-b01e-538a9d39a760
 

{
    "success": true,
    "message": "Success",
    "data": {
        "plan": null
    }
}
 

Request      

GET api/v1/plan-required

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

List all unclaimed files for the guest token.

GET /api/guest/files

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/guest/files" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/guest/files"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-54416ffbaca53616955ab662c998e1f0-6aab43e125ad339f-01
x-trace-id: 54416ffbaca53616955ab662c998e1f0
x-span-id: 6aab43e125ad339f
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 48f590f1-cd35-4d90-9721-e19d4d165754
 

{
    "success": true,
    "message": "Success",
    "data": {
        "files": [],
        "count": 0
    }
}
 

Request      

GET api/v1/guest/files

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Delete an unclaimed file.

DELETE /api/guest/files/{uuid}

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/guest/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/guest/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/guest/files/{uuid}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

Result preview for an unclaimed file.

GET /api/guest/files/{uuid}/preview

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/guest/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed/preview" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/guest/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed/preview"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-73b4863c7f0700c5013ebba619695496-e9e8e7308d8bca70-01
x-trace-id: 73b4863c7f0700c5013ebba619695496
x-span-id: e9e8e7308d8bca70
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7a19bc12-d841-4173-b638-73486c215f08
 

{
    "success": false,
    "message": "File not found or unauthorized"
}
 

Request      

GET api/v1/guest/files/{uuid}/preview

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

Get file type restrictions for a task type.

GET /api/guest/file-types/{taskType}

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/guest/file-types/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/guest/file-types/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (422):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-1fa183078c5b19d62939e2a70d431d0a-7ea918bfd4d747cc-01
x-trace-id: 1fa183078c5b19d62939e2a70d431d0a
x-span-id: 7ea918bfd4d747cc
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2d6f7df8-ed70-412b-b4f9-2ffc03d01c51
 

{
    "success": false,
    "message": "Validation failed",
    "errors": "Invalid task type: architecto"
}
 

Request      

GET api/v1/guest/file-types/{taskType}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

taskType   string     

Example: architecto

Handle user logout

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/auth/logout" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/auth/logout"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/auth/logout

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Refresh authentication token

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/auth/refresh" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/auth/refresh"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/auth/refresh

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/auth/social/{provider}/redirect

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/auth/social/architecto/redirect" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/auth/social/architecto/redirect"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-9e09406a717b16976ce100868472cc1f-b66ccc76e8f0e764-01
x-trace-id: 9e09406a717b16976ce100868472cc1f
x-span-id: b66ccc76e8f0e764
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cc3e6284-1d37-4d2e-bfd3-775abe67f9e5
 

{
    "success": false,
    "error_code": "internal_server_error",
    "message": "Something went wrong on our side. Please try again, and contact support if the problem persists.",
    "timestamp": "2026-09-04T04:28:23.727873Z",
    "context": {
        "path": "/api/v1/auth/social/architecto/redirect",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/auth/social/{provider}/redirect

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

provider   string     

Example: architecto

GET api/v1/auth/social/{provider}/callback

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/auth/social/architecto/callback" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/auth/social/architecto/callback"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-541ed5530a5d4c214c85684bd042aa9f-ebf0feb905ba3c5c-01
x-trace-id: 541ed5530a5d4c214c85684bd042aa9f
x-span-id: ebf0feb905ba3c5c
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496163
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9dfda1b6-5ab2-4643-aeff-091576c3656e
 

{
    "success": false,
    "message": "Authentication failed."
}
 

Request      

GET api/v1/auth/social/{provider}/callback

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

provider   string     

Example: architecto

API endpoint to verify email

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/email/verify" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"bngzmi\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/email/verify"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "bngzmi"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/email/verify

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

code   string     

Must be 6 characters. Example: bngzmi

API endpoint to resend verification email

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/email/verification-notification" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/email/verification-notification"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/email/verification-notification

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/user/profile

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 08a7dce8-e526-40a3-925a-d457b4b6f530
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.776872Z",
    "context": {
        "path": "/api/v1/user/profile",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user/profile

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

PUT api/v1/user/profile

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/user/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/v1/user/profile

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Counts the caller already owns — files, credits spent, when they joined.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 08574e02-23b3-49fc-92d3-ff7aae5ce873
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.791321Z",
    "context": {
        "path": "/api/v1/user/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's verifications.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user/verifications" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/verifications"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cb6dbce8-e61b-4820-9b7f-39f188e0cfe5
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.799344Z",
    "context": {
        "path": "/api/v1/user/verifications",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user/verifications

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create a new verification.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/user/verifications" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"phone\",
    \"identifier\": \"architecto\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/user/verifications"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "phone",
    "identifier": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/user/verifications

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

type   string     

Example: phone

Must be one of:
  • email
  • phone
  • email_change
  • phone_change
identifier   string     

Example: architecto

Get specific verification.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user/verifications/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/verifications/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 61421972-55af-48fc-9d97-e1b0d69336c2
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.803159Z",
    "context": {
        "path": "/api/v1/user/verifications/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user/verifications/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the verification. Example: 564

Verify a verification code.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/user/verifications/564/verify" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"bngzmi\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/user/verifications/564/verify"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "bngzmi"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/user/verifications/{id}/verify

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the verification. Example: 564

Body Parameters

code   string     

Must be 6 characters. Example: bngzmi

Resend verification code.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/user/verifications/564/resend" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/verifications/564/resend"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/user/verifications/{id}/resend

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the verification. Example: 564

Get all user PII data (masked)

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user/pii" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/pii"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: fe63ab15-5e1e-4cfd-85ad-9781d809eeaf
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.827920Z",
    "context": {
        "path": "/api/v1/user/pii",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user/pii

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get PII data (decrypted)

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user/pii/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/pii/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 856a41b8-70a4-4a4b-aa8a-104a6be86fe4
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.833740Z",
    "context": {
        "path": "/api/v1/user/pii/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user/pii/{dataType}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

dataType   string     

Example: architecto

Get masked PII data (safe for UI)

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user/pii/architecto/masked" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/pii/architecto/masked"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b8865c60-e964-4a72-bcd8-f5431eb1ccec
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.837765Z",
    "context": {
        "path": "/api/v1/user/pii/architecto/masked",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user/pii/{dataType}/masked

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

dataType   string     

Example: architecto

Get last4 PII data (for identification)

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user/pii/architecto/last4" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/pii/architecto/last4"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 90644fa6-b844-4086-b937-ac07e996859a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.840841Z",
    "context": {
        "path": "/api/v1/user/pii/architecto/last4",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user/pii/{dataType}/last4

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

dataType   string     

Example: architecto

Verify PII data

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/user/pii/architecto/verify" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/pii/architecto/verify"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/user/pii/{dataType}/verify

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

dataType   string     

Example: architecto

GET api/v1/user/credits-and-plan

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user/credits-and-plan" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/credits-and-plan"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c7047cc3-65b8-46ad-bf7a-39bf5ed74283
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.845945Z",
    "context": {
        "path": "/api/v1/user/credits-and-plan",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user/credits-and-plan

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

DELETE api/v1/user/profile

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/user/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/user/profile

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get available translation providers.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/providers/available" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/providers/available"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1b3787b2-f3a2-44ae-985a-7e71e50eda95
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.895180Z",
    "context": {
        "path": "/api/v1/translation/providers/available",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/providers/available

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get supported languages.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/languages/supported" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/languages/supported"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cbd80d26-6e46-4df4-82d4-4073b2bc05d4
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.897922Z",
    "context": {
        "path": "/api/v1/translation/languages/supported",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/languages/supported

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get translation statistics.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ea83c39a-3432-450e-a251-9f1046f094e7
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.900935Z",
    "context": {
        "path": "/api/v1/translation/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Start translation for a file.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/8fa195c53e-6380c7a1d1ed92bea40f297f9/translate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/8fa195c53e-6380c7a1d1ed92bea40f297f9/translate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/{uuid}/translate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

Download translation result for a file.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/8fa195c53e-6380c7a1d1ed92bea40f297f9/download" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/8fa195c53e-6380c7a1d1ed92bea40f297f9/download"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ef571ec0-f5a4-4a5b-bcd4-50dbe98e8a43
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.922204Z",
    "context": {
        "path": "/api/v1/translation/8fa195c53e-6380c7a1d1ed92bea40f297f9/download",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/{uuid}/download

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

Get WebSocket configuration for client connection.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/websocket/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/websocket/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3bde658b-ce74-4204-93e8-54081572e221
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.926744Z",
    "context": {
        "path": "/api/v1/translation/websocket/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/websocket/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get WebSocket statistics and connection info.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/websocket/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/websocket/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d010b331-7ec4-4fa6-a27c-8b5ed682cd11
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:23.929241Z",
    "context": {
        "path": "/api/v1/translation/websocket/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/websocket/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET /api/translation/{fileId}/review

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/564/review" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/564/review"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 697f5d0f-f393-44e9-a760-8109008ada62
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.021287Z",
    "context": {
        "path": "/api/v1/translation/564/review",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/{fileId}/review

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

GET /api/translation/{fileId}/segments

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/564/segments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/564/segments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e20e3913-403f-41ac-a129-075b5a350a52
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.024004Z",
    "context": {
        "path": "/api/v1/translation/564/segments",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/{fileId}/segments

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

POST /api/translation/{file:id}/segments/{translationSegment}/approve

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/architecto/segments/16/approve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/architecto/segments/16/approve"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/{file_id}/segments/{translationSegment_id}/approve

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

file_id   string     

The ID of the file. Example: architecto

translationSegment_id   integer     

The ID of the translationSegment. Example: 16

POST /api/translation/{file:id}/segments/{translationSegment}/retranslate

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/architecto/segments/16/retranslate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/architecto/segments/16/retranslate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/{file_id}/segments/{translationSegment_id}/retranslate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

file_id   string     

The ID of the file. Example: architecto

translationSegment_id   integer     

The ID of the translationSegment. Example: 16

POST /api/translation/{file:id}/segments/approve-all

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/architecto/segments/approve-all" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/architecto/segments/approve-all"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/{file_id}/segments/approve-all

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

file_id   string     

The ID of the file. Example: architecto

POST /api/translation/{fileId}/segments/autosave

requires authentication

Q1.6: DB::transaction + version check + throttle — do NOT modify this logic. Throttle middleware remains on the route. Transaction + lock lives in the Handler.

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/564/segments/autosave" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://forgefile.com/api/v1/translation/564/segments/autosave"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/{fileId}/segments/autosave

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

Body Parameters

edits   string  optional    
segment_id   integer     

Example: 16

edited_text   string     

Must not be greater than 5000 characters. Example: n

version   integer  optional    

Must be at least 1. Example: 67

POST /api/translation/{fileId}/segments/submit-review

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/564/segments/submit-review" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/564/segments/submit-review"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/{fileId}/segments/submit-review

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

GET /api/translation/{fileId}/segments/export

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/564/segments/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/564/segments/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4a11d56c-2591-40e5-b335-328af87d92b6
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.093043Z",
    "context": {
        "path": "/api/v1/translation/564/segments/export",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/{fileId}/segments/export

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

GET /api/translation/{fileId}/segments/{segmentId}/history

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/564/segments/564/history" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/564/segments/564/history"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 359c0f08-6648-4abb-841a-9c1ffa945bb0
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.100624Z",
    "context": {
        "path": "/api/v1/translation/564/segments/564/history",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/{fileId}/segments/{segmentId}/history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

segmentId   string     

Example: 564

POST /api/translation/{fileId}/segments/{segmentId}/review

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/564/segments/564/review" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"action\": \"reject\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/translation/564/segments/564/review"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "action": "reject"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/translation/{fileId}/segments/{segmentId}/review

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

segmentId   string     

Example: 564

Body Parameters

action   string     

Example: reject

Must be one of:
  • approve
  • reject

GET /api/translation/{fileId}/review-summary

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/564/review-summary" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/564/review-summary"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d352e1ff-0f93-4632-a809-ea61c13bdb75
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.104388Z",
    "context": {
        "path": "/api/v1/translation/564/review-summary",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/{fileId}/review-summary

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

POST /api/translation/{fileId}/apply-edits

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/564/apply-edits" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/564/apply-edits"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/{fileId}/apply-edits

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

Update file parameters.

requires authentication

Domain exceptions are handled by Handler.php.

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/tasks/files/564/update-parameters" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"file_id\": 16,
    \"source_language\": \"ngzmiy\",
    \"target_language\": \"vdljni\",
    \"quality\": \"standard\",
    \"preserve_formatting\": true,
    \"include_context\": true,
    \"quality_profile\": \"lossless\",
    \"language\": \"khwayk\",
    \"provider\": \"architecto\",
    \"confidence_threshold\": \"architecto\",
    \"extract_tables\": true,
    \"extract_forms\": false
}"
const url = new URL(
    "https://forgefile.com/api/v1/tasks/files/564/update-parameters"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "file_id": 16,
    "source_language": "ngzmiy",
    "target_language": "vdljni",
    "quality": "standard",
    "preserve_formatting": true,
    "include_context": true,
    "quality_profile": "lossless",
    "language": "khwayk",
    "provider": "architecto",
    "confidence_threshold": "architecto",
    "extract_tables": true,
    "extract_forms": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/tasks/files/{fileId}/update-parameters

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

Body Parameters

file_id   integer  optional    

The id of an existing record in the files table. Example: 16

source_language   string  optional    

Must match the regex /^[a-z]{2}(-[A-Z]{2})?$/. Must not be greater than 10 characters. Example: ngzmiy

target_language   string  optional    

Must match the regex /^[a-z]{2}(-[A-Z]{2})?$/. Must not be greater than 10 characters. Example: vdljni

quality   string  optional    

Example: standard

Must be one of:
  • standard
  • premium
preserve_formatting   boolean  optional    

Example: true

include_context   boolean  optional    

Example: true

quality_profile   string  optional    

Example: lossless

Must be one of:
  • lossless
  • balanced
  • aggressive
language   string  optional    

Must not be greater than 10 characters. Example: khwayk

provider   string  optional    

Example: architecto

confidence_threshold   string  optional    

Example: architecto

extract_tables   boolean  optional    

Example: true

extract_forms   boolean  optional    

Example: false

Get user's credit balance

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/credits" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/credits"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1435eff2-e0c1-4e60-af55-8137448aca75
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.198668Z",
    "context": {
        "path": "/api/v1/credits",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/credits

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's credit transactions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/credits/transactions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/credits/transactions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 16c9e985-695e-41f4-a294-4b45e8d017ce
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.202282Z",
    "context": {
        "path": "/api/v1/credits/transactions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/credits/transactions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Complete checkout for API (legacy support)

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/credits/checkout/8fa195c53e-6380c7a1d1ed92bea40f297f9" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/credits/checkout/8fa195c53e-6380c7a1d1ed92bea40f297f9"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/credits/checkout/{uuid}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

Show the current subscription.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/subscription/current" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/subscription/current"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0ee0fdfd-feaa-497a-a4c0-955d0bcf346a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.213522Z",
    "context": {
        "path": "/api/v1/subscription/current",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/subscription/current

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Show available plans.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/subscription/plans" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/subscription/plans"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9bcc8ee7-2195-4879-8036-a2c05e014257
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.216489Z",
    "context": {
        "path": "/api/v1/subscription/plans",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/subscription/plans

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Show user transactions.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/subscription/transactions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/subscription/transactions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d51479c3-3599-4aea-b4cc-325eb57e6b4c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.219523Z",
    "context": {
        "path": "/api/v1/subscription/transactions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/subscription/transactions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Cancel subscription.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/subscription/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/subscription/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/subscription/cancel

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get billing portal URL.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/subscription/portal" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/subscription/portal"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2f3c3fac-84b4-4cb1-bbf7-7fc792042c2c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.233552Z",
    "context": {
        "path": "/api/v1/subscription/portal",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/subscription/portal

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/support/tickets

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/support/tickets" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/support/tickets"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e33a373a-9175-47de-8fdf-4a8431ab02b8
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.258492Z",
    "context": {
        "path": "/api/v1/support/tickets",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/support/tickets

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/support/tickets/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/support/tickets/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/support/tickets/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: dfeaea3a-effe-4ee8-983c-e6f6377d7a1b
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.261665Z",
    "context": {
        "path": "/api/v1/support/tickets/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/support/tickets/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the ticket. Example: 564

GET api/v1/notifications

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/notifications" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/notifications"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ee705113-a3a5-4a3a-b486-e2eb47bb7086
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.270506Z",
    "context": {
        "path": "/api/v1/notifications",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/notifications

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/notifications/{id}/mark-read

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/notifications/564/mark-read" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/notifications/564/mark-read"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/notifications/{id}/mark-read

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the notification. Example: 564

POST api/v1/notifications/mark-all-read

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/notifications/mark-all-read" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/notifications/mark-all-read"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/notifications/mark-all-read

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/notifications/preferences

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/notifications/preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/notifications/preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 24ca3d36-53be-4f56-9e8c-c7031b06a91a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.274885Z",
    "context": {
        "path": "/api/v1/notifications/preferences",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/notifications/preferences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

PUT api/v1/notifications/preferences

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/notifications/preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/notifications/preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/v1/notifications/preferences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/notifications/push-token

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/notifications/push-token" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/notifications/push-token"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/notifications/push-token

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/notifications/delivery

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/notifications/delivery" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/notifications/delivery"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9c219b24-32b3-4d24-950e-b8082d730e86
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.279109Z",
    "context": {
        "path": "/api/v1/notifications/delivery",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/notifications/delivery

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/notifications/delivery/{id}/retry

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/notifications/delivery/564/retry" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/notifications/delivery/564/retry"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/notifications/delivery/{id}/retry

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the delivery. Example: 564

GET api/v1/features

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/features" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/features"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f8a2d96a-ed03-4823-b403-975fec0a7fc0
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.282765Z",
    "context": {
        "path": "/api/v1/features",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/features

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get token usage statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tokens/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tokens/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 46c5146e-ac46-4738-937a-a7203449d762
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.313360Z",
    "context": {
        "path": "/api/v1/tokens/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tokens/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get list of user's API tokens

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tokens" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tokens"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4b669c9a-6e54-425c-907b-4fa965bafacd
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.317074Z",
    "context": {
        "path": "/api/v1/tokens",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tokens

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Show specific API token

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tokens/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tokens/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 69f9a5ec-fdb4-44c2-832b-1f0b602242b1
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.323968Z",
    "context": {
        "path": "/api/v1/tokens/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tokens/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the token. Example: 564

Update API token

requires authentication

Uses UpdateApiTokenRequest for validation following Clean Architecture.

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/tokens/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"expires_at\": \"2052-09-27\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/tokens/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "expires_at": "2052-09-27"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/tokens/{id}

PATCH api/v1/tokens/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the token. Example: 564

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

expires_at   string  optional    

Must be a valid date. Must be a date after now. Example: 2052-09-27

Delete API token

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/tokens/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tokens/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/tokens/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the token. Example: 564

Regenerate API token

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/tokens/564/regenerate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tokens/564/regenerate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/tokens/{id}/regenerate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the token. Example: 564

GET api/v1/auth/social/providers

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/auth/social/providers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/auth/social/providers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d7aec34c-c132-4937-ab21-7c53901affbb
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.361103Z",
    "context": {
        "path": "/api/v1/auth/social/providers",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/auth/social/providers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/auth/social/unlink/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/auth/social/unlink/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

GET api/v1/auth/social/linked

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/auth/social/linked" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/auth/social/linked"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f8d77856-5028-4160-8f5f-155a61688030
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.385442Z",
    "context": {
        "path": "/api/v1/auth/social/linked",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/auth/social/linked

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get referral program information.

requires authentication

The published terms come from the same policy the payout code applies, so this endpoint cannot drift away from what partners are actually paid.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/referral/info" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/referral/info"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 17adbdc4-e639-4908-8563-5274e112c90f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.412643Z",
    "context": {
        "path": "/api/v1/referral/info",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/referral/info

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's referral statistics.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/referral/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/referral/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 656f1a12-9c48-4491-a62b-5b4ae3fedcf4
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.415898Z",
    "context": {
        "path": "/api/v1/referral/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/referral/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's referral history.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/referral/history" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/referral/history"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: af814319-4c3b-459c-b3c4-f703276908f8
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.418963Z",
    "context": {
        "path": "/api/v1/referral/history",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/referral/history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/referral/link" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/referral/link"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f6382745-5f00-4dc8-9f1b-5f98ef3f17fb
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.421871Z",
    "context": {
        "path": "/api/v1/referral/link",
        "method": "GET",
        "user_id": null
    }
}
 

Get user's archives.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/archives" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/archives"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5179866d-b072-424f-b837-19b8a0e8a16e
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.443645Z",
    "context": {
        "path": "/api/v1/archives",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/archives

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Delete archive.

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/archives/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/archives/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/archives/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the archive. Example: 564

Get archive status.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/archives/564/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/archives/564/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 95ae7456-7e3e-42b0-85a8-e903ff5dd32b
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.447968Z",
    "context": {
        "path": "/api/v1/archives/564/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/archives/{id}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the archive. Example: 564

Get supported archive formats.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/archives/formats/supported" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/archives/formats/supported"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1217c223-70b5-4f0a-9dcb-047d7172a522
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.450745Z",
    "context": {
        "path": "/api/v1/archives/formats/supported",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/archives/formats/supported

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get archive statistics.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/archives/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/archives/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7aaae766-7b29-4b45-91d9-d54ebe6da777
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.453769Z",
    "context": {
        "path": "/api/v1/archives/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/archives/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's onboarding progress.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/onboarding/progress" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/onboarding/progress"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 6c403dd9-b56d-4d63-a0cd-a6c2fa8e722e
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.469142Z",
    "context": {
        "path": "/api/v1/onboarding/progress",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/onboarding/progress

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Reset user onboarding.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/onboarding/reset" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/onboarding/reset"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/onboarding/reset

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get onboarding steps configuration.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/onboarding/steps" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/onboarding/steps"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 6489644d-d5cc-4875-9d03-afcd01218799
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.493507Z",
    "context": {
        "path": "/api/v1/onboarding/steps",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/onboarding/steps

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get onboarding statistics.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/onboarding/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/onboarding/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: eb30f33f-ef4c-49e7-9350-eb12975b1de4
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.496213Z",
    "context": {
        "path": "/api/v1/onboarding/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/onboarding/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Logout user.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/mobile/logout" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/logout"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/mobile/logout

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user profile.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ed28b708-b604-497f-9458-698fd810c2ba
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.508546Z",
    "context": {
        "path": "/api/v1/mobile/profile",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/profile

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update user profile.

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/mobile/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "name=b"\
    --form "[email protected]"\
    --form "phone=iyvdljnikhwaykcm"\
    --form "language=de"\
    --form "timezone=America/St_Lucia"\
    --form "avatar=@/private/var/folders/27/1ybyjfdn7yj5rcjl64hn4cvc0000gn/T/phpz8aYQw" 
const url = new URL(
    "https://forgefile.com/api/v1/mobile/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('name', 'b');
body.append('email', '[email protected]');
body.append('phone', 'iyvdljnikhwaykcm');
body.append('language', 'de');
body.append('timezone', 'America/St_Lucia');
body.append('avatar', document.querySelector('input[name="avatar"]').files[0]);

fetch(url, {
    method: "PUT",
    headers,
    body,
}).then(response => response.json());

Request      

PUT api/v1/mobile/profile

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: [email protected]

phone   string  optional    

Must not be greater than 20 characters. Example: iyvdljnikhwaykcm

language   string  optional    

Example: de

Must be one of:
  • en
  • ru
  • es
  • fr
  • de
  • it
  • pt
  • ja
  • ko
  • zh
timezone   string  optional    

Must not be greater than 50 characters. Example: America/St_Lucia

avatar   file  optional    

Must be an image. Must not be greater than 2048 kilobytes. Example: /private/var/folders/27/1ybyjfdn7yj5rcjl64hn4cvc0000gn/T/phpz8aYQw

Get user files.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/files" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"page\": 16,
    \"per_page\": 22,
    \"type\": \"document\",
    \"status\": \"completed\",
    \"search\": \"g\",
    \"sort\": \"name\",
    \"order\": \"asc\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/files"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "page": 16,
    "per_page": 22,
    "type": "document",
    "status": "completed",
    "search": "g",
    "sort": "name",
    "order": "asc"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ee90bd14-1680-4262-bba0-f3d1479550c4
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.527558Z",
    "context": {
        "path": "/api/v1/mobile/files",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/files

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

page   integer  optional    

Must be at least 1. Example: 16

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 22

type   string  optional    

Example: document

Must be one of:
  • all
  • image
  • video
  • audio
  • document
  • archive
status   string  optional    

Example: completed

Must be one of:
  • all
  • processing
  • completed
  • failed
search   string  optional    

Must not be greater than 255 characters. Example: g

sort   string  optional    

Example: name

Must be one of:
  • created_at
  • name
  • size
  • type
order   string  optional    

Example: asc

Must be one of:
  • asc
  • desc

Get file details.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/files/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/files/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 00e8e617-8cec-4e17-a1bf-97817ec41edf
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.536678Z",
    "context": {
        "path": "/api/v1/mobile/files/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/files/{fileId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

Download file.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/files/architecto/download" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/files/architecto/download"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: bccc6f5c-91a8-4bd9-8534-e7857c1c55e6
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.540015Z",
    "context": {
        "path": "/api/v1/mobile/files/architecto/download",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/files/{fileId}/download

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

Get file processing status.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/files/architecto/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/files/architecto/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 74994f43-b268-4bd5-99f4-7bf36ce665c6
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.546689Z",
    "context": {
        "path": "/api/v1/mobile/files/architecto/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/files/{fileId}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

Get notifications.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/notifications" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"page\": 16,
    \"per_page\": 22,
    \"unread_only\": true,
    \"type\": \"g\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/notifications"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "page": 16,
    "per_page": 22,
    "unread_only": true,
    "type": "g"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 654099ba-6d74-4357-89d5-e4453061daab
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.550424Z",
    "context": {
        "path": "/api/v1/mobile/notifications",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/notifications

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

page   integer  optional    

Must be at least 1. Example: 16

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 22

unread_only   boolean  optional    

Example: true

type   string  optional    

Must not be greater than 50 characters. Example: g

Mark notification as read.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/mobile/notifications/architecto/read" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/notifications/architecto/read"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/mobile/notifications/{notificationId}/read

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

notificationId   string     

Example: architecto

Mark all notifications as read.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/mobile/notifications/read-all" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/notifications/read-all"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/mobile/notifications/read-all

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get notification preferences.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/notifications/preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/notifications/preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2c63a7b0-6404-433c-a562-ff6f11491e68
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.568420Z",
    "context": {
        "path": "/api/v1/mobile/notifications/preferences",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/notifications/preferences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update notification preferences.

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/mobile/notifications/preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": true,
    \"push\": false,
    \"sms\": false,
    \"file_processing\": true,
    \"system_updates\": false,
    \"marketing\": false
}"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/notifications/preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": true,
    "push": false,
    "sms": false,
    "file_processing": true,
    "system_updates": false,
    "marketing": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/mobile/notifications/preferences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   boolean  optional    

Example: true

push   boolean  optional    

Example: false

sms   boolean  optional    

Example: false

file_processing   boolean  optional    

Example: true

system_updates   boolean  optional    

Example: false

marketing   boolean  optional    

Example: false

Process pending syncs

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/mobile/offline-sync/process" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"device_id\": \"architecto\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/offline-sync/process"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "device_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/mobile/offline-sync/process

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

device_id   string  optional    

Example: architecto

Get sync status

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/offline-sync/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"device_id\": \"architecto\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/offline-sync/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "device_id": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9121a81e-c78a-49d0-9d9d-ee93e8f6c618
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.602818Z",
    "context": {
        "path": "/api/v1/mobile/offline-sync/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/offline-sync/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

device_id   string  optional    

Example: architecto

Get user biometrics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/biometric" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"device_id\": \"architecto\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/biometric"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "device_id": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1f853e69-5e0b-416f-a1dd-16a063943d8a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.637297Z",
    "context": {
        "path": "/api/v1/mobile/biometric",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/biometric

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

device_id   string  optional    

Example: architecto

Get user tasks

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/background-tasks" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"device_id\": \"architecto\",
    \"status\": \"failed\",
    \"task_type\": \"architecto\",
    \"priority\": \"urgent\",
    \"limit\": 22
}"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/background-tasks"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "device_id": "architecto",
    "status": "failed",
    "task_type": "architecto",
    "priority": "urgent",
    "limit": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1afbd24f-8de8-4a1b-8988-985d6c16e5aa
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.662302Z",
    "context": {
        "path": "/api/v1/mobile/background-tasks",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/background-tasks

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

device_id   string  optional    

Example: architecto

status   string  optional    

Example: failed

Must be one of:
  • pending
  • running
  • completed
  • failed
  • cancelled
  • paused
task_type   string  optional    

Example: architecto

priority   string  optional    

Example: urgent

Must be one of:
  • low
  • normal
  • high
  • urgent
limit   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 22

Get app statistics.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f38a5aed-cdb8-43be-bfa5-b1af85fc1ac7
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.667960Z",
    "context": {
        "path": "/api/v1/mobile/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get app configuration.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/mobile/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/mobile/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e8d8d381-f96a-4e2a-abc6-9cd1f3c5b0fa
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.670880Z",
    "context": {
        "path": "/api/v1/mobile/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/mobile/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create new chat session

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/ai/chat/sessions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"personality\": \"creative\",
    \"language\": \"pt\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/chat/sessions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "personality": "creative",
    "language": "pt"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ai/chat/sessions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

title   string  optional    

Must not be greater than 255 characters. Example: b

personality   string  optional    

Example: creative

Must be one of:
  • professional
  • friendly
  • technical
  • creative
language   string  optional    

Example: pt

Must be one of:
  • en
  • ru
  • es
  • fr
  • de
  • it
  • pt
  • ja
  • ko
  • zh
context_data   object  optional    
metadata   object  optional    

Get chat session messages

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/chat/sessions/architecto/messages" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"limit\": 1
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/chat/sessions/architecto/messages"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "limit": 1
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c2821a29-6438-4b61-b190-99bd261c717f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.694877Z",
    "context": {
        "path": "/api/v1/ai/chat/sessions/architecto/messages",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/chat/sessions/{sessionId}/messages

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

sessionId   string     

Example: architecto

Body Parameters

limit   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 1

Get user chat sessions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/chat/sessions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"personality\": \"professional\",
    \"language\": \"ru\",
    \"active\": true,
    \"limit\": 1
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/chat/sessions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "personality": "professional",
    "language": "ru",
    "active": true,
    "limit": 1
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cd427a6b-2a66-47f2-9294-6bfc92c52aba
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.704012Z",
    "context": {
        "path": "/api/v1/ai/chat/sessions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/chat/sessions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

personality   string  optional    

Example: professional

Must be one of:
  • professional
  • friendly
  • technical
  • creative
language   string  optional    

Example: ru

Must be one of:
  • en
  • ru
  • es
  • fr
  • de
  • it
  • pt
  • ja
  • ko
  • zh
active   boolean  optional    

Example: true

limit   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 1

Update chat session

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/ai/chat/sessions/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"personality\": \"friendly\",
    \"language\": \"en\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/chat/sessions/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "personality": "friendly",
    "language": "en"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/ai/chat/sessions/{sessionId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

sessionId   string     

Example: architecto

Body Parameters

title   string  optional    

Must not be greater than 255 characters. Example: b

personality   string  optional    

Example: friendly

Must be one of:
  • professional
  • friendly
  • technical
  • creative
language   string  optional    

Example: en

Must be one of:
  • en
  • ru
  • es
  • fr
  • de
  • it
  • pt
  • ja
  • ko
  • zh
context_data   object  optional    
metadata   object  optional    

Delete chat session

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/ai/chat/sessions/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/chat/sessions/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/ai/chat/sessions/{sessionId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

sessionId   string     

Example: architecto

Get user content generations

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/content" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"template_type\": \"description\",
    \"language\": \"it\",
    \"tone\": \"professional\",
    \"length\": \"short\",
    \"is_public\": true,
    \"quality_score\": 1,
    \"tag\": \"n\",
    \"limit\": 7
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/content"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "template_type": "description",
    "language": "it",
    "tone": "professional",
    "length": "short",
    "is_public": true,
    "quality_score": 1,
    "tag": "n",
    "limit": 7
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9224267d-e8fc-4669-8388-1065a74c243a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.755645Z",
    "context": {
        "path": "/api/v1/ai/content",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/content

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

template_type   string  optional    

Example: description

Must be one of:
  • email
  • report
  • summary
  • description
  • blog_post
  • social_media
  • proposal
  • presentation
language   string  optional    

Example: it

Must be one of:
  • en
  • ru
  • es
  • fr
  • de
  • it
  • pt
  • ja
  • ko
  • zh
tone   string  optional    

Example: professional

Must be one of:
  • formal
  • casual
  • professional
  • friendly
  • technical
length   string  optional    

Example: short

Must be one of:
  • short
  • medium
  • long
is_public   boolean  optional    

Example: true

quality_score   number  optional    

Must be at least 0. Must not be greater than 1. Example: 1

tag   string  optional    

Must not be greater than 50 characters. Example: n

limit   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 7

Get content statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/content/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/content/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 105effd1-2ad2-4a2f-82b5-d4e6d0bc2106
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.763444Z",
    "context": {
        "path": "/api/v1/ai/content/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/content/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get content by ID

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/content/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/content/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d3b1bf67-cecb-45c9-bf02-d469f06ab42a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.768608Z",
    "context": {
        "path": "/api/v1/ai/content/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/content/{contentId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

contentId   string     

Example: architecto

Update content

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/ai/content/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"b\",
    \"is_public\": true,
    \"tags\": [
        \"n\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/v1/ai/content/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "title": "b",
    "is_public": true,
    "tags": [
        "n"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/ai/content/{contentId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

contentId   string     

Example: architecto

Body Parameters

title   string  optional    

Must not be greater than 255 characters. Example: b

is_public   boolean  optional    

Example: true

tags   string[]  optional    

Must not be greater than 50 characters.

Delete content

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/ai/content/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/content/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/ai/content/{contentId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

contentId   string     

Example: architecto

Get supported languages

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/language/supported" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/language/supported"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 852b0e7c-c514-469d-a2e8-08ab2b7ad46d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.803281Z",
    "context": {
        "path": "/api/v1/ai/language/supported",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/language/supported

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get AI configuration

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ai/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ai/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9e9d7ef9-7e11-4cb3-a6ff-3c6ad62c8826
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.895882Z",
    "context": {
        "path": "/api/v1/ai/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ai/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user integrations

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 240797b5-d788-4cef-8631-7c783e1b4472
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.902991Z",
    "context": {
        "path": "/api/v1/integrations",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get a specific integration

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 960e8272-fe16-455b-8f28-d0680234eac8
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.909184Z",
    "context": {
        "path": "/api/v1/integrations/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the integration. Example: 564

Update an integration

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/integrations/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"webhook_url\": \"http:\\/\\/bailey.com\\/\",
    \"is_active\": false
}"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "webhook_url": "http:\/\/bailey.com\/",
    "is_active": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/integrations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the integration. Example: 564

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

configuration   object  optional    
credentials   object  optional    
webhook_url   string  optional    

Must be a valid URL. Must not be greater than 500 characters. Example: http://bailey.com/

is_active   boolean  optional    

Example: false

metadata   object  optional    

Delete an integration

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/integrations/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/integrations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   integer     

The ID of the integration. Example: 564

Test an integration

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/integrations/16/test" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/16/test"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/integrations/{integration_id}/test

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

integration_id   integer     

The ID of the integration. Example: 16

Get integration statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/statistics/overview" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/statistics/overview"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: fe96dacb-e798-42b5-b612-58688c4a2ab7
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.917546Z",
    "context": {
        "path": "/api/v1/integrations/statistics/overview",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/statistics/overview

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get webhook events

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/webhooks/events" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/webhooks/events"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9daedb5a-8065-4bbf-b513-d55e1403828c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.938720Z",
    "context": {
        "path": "/api/v1/integrations/webhooks/events",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/webhooks/events

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Retry a webhook event

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/integrations/webhooks/events/564/retry" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/webhooks/events/564/retry"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/integrations/webhooks/events/{id}/retry

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the event. Example: 564

Get webhook statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/webhooks/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/webhooks/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3bf49d85-f8d5-488a-a950-a5eb650fdb71
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.943292Z",
    "context": {
        "path": "/api/v1/integrations/webhooks/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/webhooks/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get integration types

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e9e863e8-816d-4e55-ac33-845f724be5d2
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.947753Z",
    "context": {
        "path": "/api/v1/integrations/types",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/types

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get integration providers

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/providers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/providers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cc4fdfe7-517c-4512-a0b8-8a55e75e42a5
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.950831Z",
    "context": {
        "path": "/api/v1/integrations/providers",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/providers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get webhook event types

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/webhook-event-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/webhook-event-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f3bb28ce-f741-4344-92bb-177cf00943d4
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.953531Z",
    "context": {
        "path": "/api/v1/integrations/webhook-event-types",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/webhook-event-types

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get integration configuration

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b51c6d95-c607-46b1-957b-1fbd4687fd27
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.956061Z",
    "context": {
        "path": "/api/v1/integrations/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Handle Slack slash commands

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/slack/slash-command" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/slack/slash-command"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/slack/slash-command

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Handle Slack interactive components

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/slack/interactive" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/slack/interactive"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/slack/interactive

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Handle Slack events (for future use)

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/slack/events" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/slack/events"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/slack/events

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get Slack bot configuration

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/slack/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/slack/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c7db1a0c-8aaf-4fb9-a14d-379156f45717
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:24.972454Z",
    "context": {
        "path": "/api/v1/slack/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/slack/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get Google OAuth authorization URL

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/google-workspace/auth-url" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/google-workspace/auth-url"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4d444974-7a97-4c38-b498-22a4009a225c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.014162Z",
    "context": {
        "path": "/api/v1/google-workspace/auth-url",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/google-workspace/auth-url

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get API version information

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/versioning/info" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/versioning/info"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f66e50f9-fb06-4d9d-8d72-6368b8b0820a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.023510Z",
    "context": {
        "path": "/api/v1/versioning/info",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/versioning/info

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get API changelog

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/versioning/changelog" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/versioning/changelog"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a3c21aa9-9a34-4815-b299-a8538df86806
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.027422Z",
    "context": {
        "path": "/api/v1/versioning/changelog",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/versioning/changelog

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get API statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/versioning/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/versioning/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7d3a8b96-a1d7-46f0-b6ed-1323b5025d72
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.034459Z",
    "context": {
        "path": "/api/v1/versioning/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/versioning/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get API documentation

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/versioning/documentation" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/versioning/documentation"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b4f4e76e-3bf0-41de-aa22-440c702cee41
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.040411Z",
    "context": {
        "path": "/api/v1/versioning/documentation",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/versioning/documentation

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get API endpoints

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/versioning/endpoints" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/versioning/endpoints"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8b31ca5c-9002-49df-aebe-0966858238d8
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.046642Z",
    "context": {
        "path": "/api/v1/versioning/endpoints",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/versioning/endpoints

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get supported API versions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/versioning/supported-versions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/versioning/supported-versions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3d11b5db-7b01-4399-b739-02b234f6f44a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.052588Z",
    "context": {
        "path": "/api/v1/versioning/supported-versions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/versioning/supported-versions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get API version configuration

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/versioning/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/versioning/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8fab1129-08ea-4453-a811-45fe88eb18d1
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.055701Z",
    "context": {
        "path": "/api/v1/versioning/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/versioning/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user gamification stats

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/gamification/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/gamification/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0dc85887-b459-4f90-aa6b-98618278550d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.101092Z",
    "context": {
        "path": "/api/v1/gamification/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/gamification/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get leaderboard

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/gamification/leaderboard" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"files_processed\",
    \"limit\": 1
}"
const url = new URL(
    "https://forgefile.com/api/v1/gamification/leaderboard"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "files_processed",
    "limit": 1
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f9adb09d-7379-48e3-b9cc-222475a9dc61
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.110180Z",
    "context": {
        "path": "/api/v1/gamification/leaderboard",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/gamification/leaderboard

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

type   string  optional    

Example: files_processed

Must be one of:
  • points
  • files_processed
  • streak
  • achievements
limit   integer  optional    

Must be at least 1. Must not be greater than 1000. Example: 1

Get available challenges

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/gamification/challenges" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/gamification/challenges"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 05485773-6a44-4869-ad0b-f43cce2eedca
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.114053Z",
    "context": {
        "path": "/api/v1/gamification/challenges",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/gamification/challenges

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get gamification configuration

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/gamification/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/gamification/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 723d4460-8231-42b3-bcc9-0d4828bb8ea7
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.119458Z",
    "context": {
        "path": "/api/v1/gamification/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/gamification/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Reset user gamification data

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/gamification/reset" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/gamification/reset"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/gamification/reset

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get audit logs

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/enterprise/audit-logs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/enterprise/audit-logs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cde39ba9-8bf6-4934-b602-3acdffe7b040
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.123855Z",
    "context": {
        "path": "/api/v1/enterprise/audit-logs",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/enterprise/audit-logs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get audit log statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/enterprise/audit-logs/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/enterprise/audit-logs/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 81b49ab7-1a5b-4efb-ae41-f62fdf92ddee
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.127520Z",
    "context": {
        "path": "/api/v1/enterprise/audit-logs/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/enterprise/audit-logs/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get data retention policies

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/enterprise/data-retention/policies" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/enterprise/data-retention/policies"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f201b046-c80d-46b7-80c2-8160a55d6adf
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.132679Z",
    "context": {
        "path": "/api/v1/enterprise/data-retention/policies",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/enterprise/data-retention/policies

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Execute data retention policy

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/enterprise/data-retention/policies/architecto/execute" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/enterprise/data-retention/policies/architecto/execute"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/enterprise/data-retention/policies/{policyId}/execute

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

policyId   string     

Example: architecto

Get data retention executions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/enterprise/data-retention/executions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/enterprise/data-retention/executions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a0fa8051-44e5-4532-a846-bcb5c4bdc6a5
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.139454Z",
    "context": {
        "path": "/api/v1/enterprise/data-retention/executions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/enterprise/data-retention/executions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get data retention statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/enterprise/data-retention/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/enterprise/data-retention/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2637db9d-ae7a-4dba-a42e-439ce6862ef7
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.142868Z",
    "context": {
        "path": "/api/v1/enterprise/data-retention/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/enterprise/data-retention/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get available SSO providers

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/enterprise/sso/providers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/enterprise/sso/providers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0294e7aa-6672-49b9-a592-c93fd9ea9fb5
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.145975Z",
    "context": {
        "path": "/api/v1/enterprise/sso/providers",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/enterprise/sso/providers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Initiate SAML SSO

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/enterprise/sso/saml/initiate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"provider\": \"b\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/enterprise/sso/saml/initiate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "provider": "b"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/enterprise/sso/saml/initiate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

provider   string  optional    

Must not be greater than 255 characters. Example: b

Get enterprise configuration

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/enterprise/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/enterprise/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f5235ab5-8701-4541-b552-ee08fce5e4ce
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.185130Z",
    "context": {
        "path": "/api/v1/enterprise/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/enterprise/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

POST api/v1/graphql

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/graphql" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/graphql"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/graphql

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/graphql

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/graphql" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/graphql"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d78c3cf7-5079-4fdd-8285-9cae7dabcc29
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.193231Z",
    "context": {
        "path": "/api/v1/graphql",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/graphql

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's integrations.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/user" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/user"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: dd8f1cee-7b12-4060-ad52-bfa748b70786
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.198382Z",
    "context": {
        "path": "/api/v1/integrations/user",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/user

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get API documentation.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/integrations/docs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/integrations/docs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f3194030-7880-4343-8ebc-a148d4ba3f9f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.201778Z",
    "context": {
        "path": "/api/v1/integrations/docs",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/integrations/docs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's webhooks.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/webhooks" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/webhooks"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5b1355aa-353c-4316-9d17-3db90add8ce9
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.206541Z",
    "context": {
        "path": "/api/v1/webhooks",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/webhooks

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update webhook.

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/webhooks/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"url\": \"http:\\/\\/bailey.com\\/\",
    \"events\": [
        \"subscription_created\"
    ],
    \"secret\": \"m\",
    \"is_active\": false
}"
const url = new URL(
    "https://forgefile.com/api/v1/webhooks/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "url": "http:\/\/bailey.com\/",
    "events": [
        "subscription_created"
    ],
    "secret": "m",
    "is_active": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/webhooks/{webhookId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

webhookId   string     

Example: architecto

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

url   string  optional    

Must be a valid URL. Must not be greater than 500 characters. Example: http://bailey.com/

events   string[]  optional    
Must be one of:
  • file_uploaded
  • file_processing_started
  • file_processing_completed
  • file_processing_failed
  • file_deleted
  • user_registered
  • user_verified
  • user_login
  • user_logout
  • subscription_created
  • subscription_cancelled
secret   string  optional    

Must not be greater than 255 characters. Example: m

is_active   boolean  optional    

Example: false

Delete webhook.

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/webhooks/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/webhooks/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/webhooks/{webhookId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

webhookId   string     

Example: architecto

Test webhook.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/webhooks/architecto/test" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/webhooks/architecto/test"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/webhooks/{webhookId}/test

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

webhookId   string     

Example: architecto

Get webhook logs.

requires authentication

Uses GetIntegrationLogsRequest for validation following Clean Architecture.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/webhooks/architecto/logs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"page\": 16,
    \"per_page\": 22,
    \"status\": \"pending\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/webhooks/architecto/logs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "page": 16,
    "per_page": 22,
    "status": "pending"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e67cdfca-a183-4537-b617-a448d3acbeb1
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.218159Z",
    "context": {
        "path": "/api/v1/webhooks/architecto/logs",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/webhooks/{webhookId}/logs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

webhookId   string     

Example: architecto

Body Parameters

page   integer  optional    

Must be at least 1. Example: 16

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 22

status   string  optional    

Example: pending

Must be one of:
  • success
  • failed
  • pending

POST api/v1/ocr/process-file/{fileId}

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/ocr/process-file/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"language\": \"bngzmiyvdljnikhw\",
    \"provider\": \"google\",
    \"confidence_threshold\": 0,
    \"extract_tables\": true,
    \"extract_forms\": false
}"
const url = new URL(
    "https://forgefile.com/api/v1/ocr/process-file/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "language": "bngzmiyvdljnikhw",
    "provider": "google",
    "confidence_threshold": 0,
    "extract_tables": true,
    "extract_forms": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ocr/process-file/{fileId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

Body Parameters

language   string  optional    

Must not be greater than 20 characters. Example: bngzmiyvdljnikhw

provider   string  optional    

Example: google

Must be one of:
  • paddleocr
  • tesseract
  • google
  • azure
  • ocrspace
  • easyocr
  • mistral
confidence_threshold   number  optional    

Must be between 0 and 1. Example: 0

extract_tables   boolean  optional    

Example: true

extract_forms   boolean  optional    

Example: false

GET api/v1/ocr/job/{jobId}/status

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ocr/job/architecto/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ocr/job/architecto/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8f94032c-7f5e-4da6-ab55-bf92d892145a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.276212Z",
    "context": {
        "path": "/api/v1/ocr/job/architecto/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ocr/job/{jobId}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobId   string     

Example: architecto

GET api/v1/ocr/job/{jobId}/result

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ocr/job/architecto/result" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ocr/job/architecto/result"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 170d3cce-0dd6-467c-9e79-ffc642f23d20
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.280771Z",
    "context": {
        "path": "/api/v1/ocr/job/architecto/result",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ocr/job/{jobId}/result

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobId   string     

Example: architecto

DELETE api/v1/ocr/job/{jobId}/cancel

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/ocr/job/architecto/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ocr/job/architecto/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/ocr/job/{jobId}/cancel

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobId   string     

Example: architecto

GET api/v1/ocr/languages

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ocr/languages" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ocr/languages"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: efd94ea9-894f-459e-90f6-3da119d40843
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.289872Z",
    "context": {
        "path": "/api/v1/ocr/languages",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ocr/languages

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/ocr/providers

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ocr/providers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ocr/providers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: eb2cfd10-1382-482c-b07d-3f5e81ef3b84
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.293784Z",
    "context": {
        "path": "/api/v1/ocr/providers",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ocr/providers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/ocr/jobs

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/ocr/jobs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/ocr/jobs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 83da370a-22a2-4db4-a2e1-f95b01ef74fd
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.298134Z",
    "context": {
        "path": "/api/v1/ocr/jobs",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/ocr/jobs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/transcription/languages

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/transcription/languages" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/transcription/languages"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 96f56432-17d9-4918-a99f-a60715351aa8
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.336389Z",
    "context": {
        "path": "/api/v1/transcription/languages",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/transcription/languages

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/transcription/providers

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/transcription/providers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/transcription/providers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 6836b9d3-ae7b-47e3-aa1a-0b08c0976d69
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.340394Z",
    "context": {
        "path": "/api/v1/transcription/providers",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/transcription/providers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/transcription/jobs

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/transcription/jobs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/transcription/jobs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 388a2490-e115-41f0-9096-83f408b1c0c9
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.344377Z",
    "context": {
        "path": "/api/v1/transcription/jobs",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/transcription/jobs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/transcription/status/{fileId}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/transcription/status/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/transcription/status/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 033e3152-d5b3-4849-8883-5c26d0435593
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.349175Z",
    "context": {
        "path": "/api/v1/transcription/status/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/transcription/status/{fileId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

GET api/v1/transcription/job/{jobId}/status

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/transcription/job/architecto/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/transcription/job/architecto/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8ba68b42-e30c-42d5-94f7-9848a2940f95
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.353533Z",
    "context": {
        "path": "/api/v1/transcription/job/architecto/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/transcription/job/{jobId}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobId   string     

Example: architecto

GET api/v1/transcription/job/{jobId}/result

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/transcription/job/architecto/result" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/transcription/job/architecto/result"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 07b11b68-83a9-4d61-b413-f894ec0e2069
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.359037Z",
    "context": {
        "path": "/api/v1/transcription/job/architecto/result",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/transcription/job/{jobId}/result

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobId   string     

Example: architecto

POST api/v1/transcription/job/{jobId}/cancel

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/transcription/job/architecto/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/transcription/job/architecto/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/transcription/job/{jobId}/cancel

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobId   string     

Example: architecto

GET api/v1/files/free-trials

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/files/free-trials" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/files/free-trials"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0fa63379-b520-495a-92b6-f212315cccc4
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.393828Z",
    "context": {
        "path": "/api/v1/files/free-trials",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/files/free-trials

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/files

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/files" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/files"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c6759bdc-868b-4f4f-9c07-11b5fa048429
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.404808Z",
    "context": {
        "path": "/api/v1/files",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/files

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/files/{uuid}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4be22933-c4df-46b1-97de-2a32409e7ae3
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.419250Z",
    "context": {
        "path": "/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/files/{uuid}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

PUT api/v1/files/{uuid}

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"status\": \"pending\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "status": "pending"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/files/{uuid}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

status   string  optional    

Example: pending

Must be one of:
  • pending
  • processing
  • completed
  • failed
  • ready

DELETE api/v1/files/{uuid}

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/files/{uuid}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

PATCH api/v1/files/{uuid}/status

requires authentication

Example request:
curl --request PATCH \
    "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"processing\"
}"
const url = new URL(
    "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "processing"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/v1/files/{uuid}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

Body Parameters

status   string     

Example: processing

Must be one of:
  • pending
  • processing
  • queue_processing
  • completed
  • failed
  • ready
  • running
  • queued

GET api/v1/files/statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/files/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/files/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9a8fe86d-0cf9-45e2-808a-cd57b8065673
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.449612Z",
    "context": {
        "path": "/api/v1/files/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/files/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/v1/files/{uuid}/download

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/download" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/download"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 174aa364-8923-4236-9f2e-572840f43952
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.456272Z",
    "context": {
        "path": "/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/download",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/files/{uuid}/download

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

GET api/v1/files/{uuid}/result

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/result" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/result"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 47e0822d-fbc4-4271-a65b-aec903b67166
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.464316Z",
    "context": {
        "path": "/api/v1/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/result",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/files/{uuid}/result

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

Start translation for a file (alias for translate method).

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/translate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/translate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/files/{uuid}/translate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

Resume translation for a file.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/resume" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/resume"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/files/{uuid}/resume

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

Retry translation for a specific chunk.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/chunks/564/retry" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/chunks/564/retry"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/chunks/{id}/retry

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the chunk. Example: 564

Cancel translation for a file.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/translation/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/translation/files/{uuid}/cancel

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

Get supported translation formats.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/translation/formats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/translation/formats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3792c0e5-ee15-41b8-9e6d-0c284fb26a0f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.535935Z",
    "context": {
        "path": "/api/v1/translation/formats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/translation/formats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Extract archive and process files asynchronously.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/archive/564/extract" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/archive/564/extract"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/archive/{id}/extract

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the archive. Example: 564

GET api/v1/conversion/status/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/conversion/status/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/conversion/status/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7f8e2790-98c2-45fc-a298-9c175b8c8cac
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.650840Z",
    "context": {
        "path": "/api/v1/conversion/status/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/conversion/status/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the status. Example: 564

GET api/v1/conversion/download/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/conversion/download/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/conversion/download/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a4a748c0-7668-4dab-8ee5-22add0a16f10
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.654978Z",
    "context": {
        "path": "/api/v1/conversion/download/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/conversion/download/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the download. Example: 564

GET api/public/languages

Example request:
curl --request GET \
    --get "https://forgefile.com/api/public/languages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/public/languages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-63d719a167a5f400c131b9b561064689-4ae45114d864f126-01
x-trace-id: 63d719a167a5f400c131b9b561064689
x-span-id: 4ae45114d864f126
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496165
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f9b30654-76ac-4995-8373-f7af99262d38
 

{
    "success": false,
    "error_code": "internal_server_error",
    "message": "Something went wrong on our side. Please try again, and contact support if the problem persists.",
    "timestamp": "2026-09-04T04:28:25.754084Z",
    "context": {
        "path": "/api/public/languages",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/public/languages

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/public/countries

Example request:
curl --request GET \
    --get "https://forgefile.com/api/public/countries" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/public/countries"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-79b326ba3d4943bdac2ba2c7ac26daae-43ce66a55fbf9057-01
x-trace-id: 79b326ba3d4943bdac2ba2c7ac26daae
x-span-id: 43ce66a55fbf9057
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496165
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: da2c65cf-2f82-4cce-bc6b-aec697d7d1e4
 

{
    "success": true,
    "message": "Success",
    "data": {
        "countries": [
            {
                "id": 1,
                "code": "US",
                "name": "United States",
                "native": "United States",
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z"
            },
            {
                "id": 2,
                "code": "CA",
                "name": "Canada",
                "native": "Canada",
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z"
            },
            {
                "id": 3,
                "code": "CH",
                "name": "Switzerland",
                "native": "Schweiz",
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z"
            },
            {
                "id": 4,
                "code": "JP",
                "name": "Japan",
                "native": "日本",
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 5,
                "code": "AD",
                "name": "Andorra",
                "native": "Andorra",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 6,
                "code": "AE",
                "name": "United Arab Emirates",
                "native": "United Arab Emirates",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 7,
                "code": "AF",
                "name": "Afghanistan",
                "native": "Afghanistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 8,
                "code": "AG",
                "name": "Antigua & Barbuda",
                "native": "Antigua & Barbuda",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 9,
                "code": "AI",
                "name": "Anguilla",
                "native": "Anguilla",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 10,
                "code": "AL",
                "name": "Albania",
                "native": "Albania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 11,
                "code": "AM",
                "name": "Armenia",
                "native": "Armenia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 12,
                "code": "AO",
                "name": "Angola",
                "native": "Angola",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 13,
                "code": "AQ",
                "name": "Antarctica",
                "native": "Antarctica",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 14,
                "code": "AR",
                "name": "Argentina",
                "native": "Argentina",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 15,
                "code": "AS",
                "name": "American Samoa",
                "native": "American Samoa",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 16,
                "code": "AT",
                "name": "Austria",
                "native": "Austria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 17,
                "code": "AU",
                "name": "Australia",
                "native": "Australia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 18,
                "code": "AW",
                "name": "Aruba",
                "native": "Aruba",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 19,
                "code": "AX",
                "name": "Åland Islands",
                "native": "Åland Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 20,
                "code": "AZ",
                "name": "Azerbaijan",
                "native": "Azerbaijan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 21,
                "code": "BA",
                "name": "Bosnia & Herzegovina",
                "native": "Bosnia & Herzegovina",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 22,
                "code": "BB",
                "name": "Barbados",
                "native": "Barbados",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 23,
                "code": "BD",
                "name": "Bangladesh",
                "native": "Bangladesh",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 24,
                "code": "BE",
                "name": "Belgium",
                "native": "Belgium",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 25,
                "code": "BF",
                "name": "Burkina Faso",
                "native": "Burkina Faso",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 26,
                "code": "BG",
                "name": "Bulgaria",
                "native": "Bulgaria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 27,
                "code": "BH",
                "name": "Bahrain",
                "native": "Bahrain",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 28,
                "code": "BI",
                "name": "Burundi",
                "native": "Burundi",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 29,
                "code": "BJ",
                "name": "Benin",
                "native": "Benin",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 30,
                "code": "BL",
                "name": "St. Barthélemy",
                "native": "St. Barthélemy",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 31,
                "code": "BM",
                "name": "Bermuda",
                "native": "Bermuda",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 32,
                "code": "BN",
                "name": "Brunei",
                "native": "Brunei",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 33,
                "code": "BO",
                "name": "Bolivia",
                "native": "Bolivia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 34,
                "code": "BQ",
                "name": "Caribbean Netherlands",
                "native": "Caribbean Netherlands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 35,
                "code": "BR",
                "name": "Brazil",
                "native": "Brazil",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 36,
                "code": "BS",
                "name": "Bahamas",
                "native": "Bahamas",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 37,
                "code": "BT",
                "name": "Bhutan",
                "native": "Bhutan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 38,
                "code": "BV",
                "name": "Bouvet Island",
                "native": "Bouvet Island",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 39,
                "code": "BW",
                "name": "Botswana",
                "native": "Botswana",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 40,
                "code": "BY",
                "name": "Belarus",
                "native": "Belarus",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 41,
                "code": "BZ",
                "name": "Belize",
                "native": "Belize",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 42,
                "code": "CC",
                "name": "Cocos (Keeling) Islands",
                "native": "Cocos (Keeling) Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 43,
                "code": "CD",
                "name": "Congo - Kinshasa",
                "native": "Congo - Kinshasa",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 44,
                "code": "CF",
                "name": "Central African Republic",
                "native": "Central African Republic",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 45,
                "code": "CG",
                "name": "Congo - Brazzaville",
                "native": "Congo - Brazzaville",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 46,
                "code": "CI",
                "name": "Côte d’Ivoire",
                "native": "Côte d’Ivoire",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 47,
                "code": "CK",
                "name": "Cook Islands",
                "native": "Cook Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 48,
                "code": "CL",
                "name": "Chile",
                "native": "Chile",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 49,
                "code": "CM",
                "name": "Cameroon",
                "native": "Cameroon",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 50,
                "code": "CN",
                "name": "China",
                "native": "China",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 51,
                "code": "CO",
                "name": "Colombia",
                "native": "Colombia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 52,
                "code": "CR",
                "name": "Costa Rica",
                "native": "Costa Rica",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 53,
                "code": "CU",
                "name": "Cuba",
                "native": "Cuba",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 54,
                "code": "CV",
                "name": "Cape Verde",
                "native": "Cape Verde",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 55,
                "code": "CW",
                "name": "Curaçao",
                "native": "Curaçao",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 56,
                "code": "CX",
                "name": "Christmas Island",
                "native": "Christmas Island",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 57,
                "code": "CY",
                "name": "Cyprus",
                "native": "Cyprus",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 58,
                "code": "CZ",
                "name": "Czechia",
                "native": "Czechia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 59,
                "code": "DE",
                "name": "Germany",
                "native": "Germany",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 60,
                "code": "DJ",
                "name": "Djibouti",
                "native": "Djibouti",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 61,
                "code": "DK",
                "name": "Denmark",
                "native": "Denmark",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 62,
                "code": "DM",
                "name": "Dominica",
                "native": "Dominica",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 63,
                "code": "DO",
                "name": "Dominican Republic",
                "native": "Dominican Republic",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 64,
                "code": "DZ",
                "name": "Algeria",
                "native": "Algeria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 65,
                "code": "EC",
                "name": "Ecuador",
                "native": "Ecuador",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 66,
                "code": "EE",
                "name": "Estonia",
                "native": "Estonia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 67,
                "code": "EG",
                "name": "Egypt",
                "native": "Egypt",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 68,
                "code": "EH",
                "name": "Western Sahara",
                "native": "Western Sahara",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 69,
                "code": "ER",
                "name": "Eritrea",
                "native": "Eritrea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 70,
                "code": "ES",
                "name": "Spain",
                "native": "Spain",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 71,
                "code": "ET",
                "name": "Ethiopia",
                "native": "Ethiopia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 72,
                "code": "FI",
                "name": "Finland",
                "native": "Finland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 73,
                "code": "FJ",
                "name": "Fiji",
                "native": "Fiji",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 74,
                "code": "FK",
                "name": "Falkland Islands",
                "native": "Falkland Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 75,
                "code": "FM",
                "name": "Micronesia",
                "native": "Micronesia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 76,
                "code": "FO",
                "name": "Faroe Islands",
                "native": "Faroe Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 77,
                "code": "FR",
                "name": "France",
                "native": "France",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 78,
                "code": "GA",
                "name": "Gabon",
                "native": "Gabon",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 79,
                "code": "GB",
                "name": "United Kingdom",
                "native": "United Kingdom",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 80,
                "code": "GD",
                "name": "Grenada",
                "native": "Grenada",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 81,
                "code": "GE",
                "name": "Georgia",
                "native": "Georgia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 82,
                "code": "GF",
                "name": "French Guiana",
                "native": "French Guiana",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 83,
                "code": "GG",
                "name": "Guernsey",
                "native": "Guernsey",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 84,
                "code": "GH",
                "name": "Ghana",
                "native": "Ghana",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 85,
                "code": "GI",
                "name": "Gibraltar",
                "native": "Gibraltar",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 86,
                "code": "GL",
                "name": "Greenland",
                "native": "Greenland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 87,
                "code": "GM",
                "name": "Gambia",
                "native": "Gambia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 88,
                "code": "GN",
                "name": "Guinea",
                "native": "Guinea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 89,
                "code": "GP",
                "name": "Guadeloupe",
                "native": "Guadeloupe",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 90,
                "code": "GQ",
                "name": "Equatorial Guinea",
                "native": "Equatorial Guinea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 91,
                "code": "GR",
                "name": "Greece",
                "native": "Greece",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 92,
                "code": "GS",
                "name": "South Georgia & South Sandwich Islands",
                "native": "South Georgia & South Sandwich Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 93,
                "code": "GT",
                "name": "Guatemala",
                "native": "Guatemala",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 94,
                "code": "GU",
                "name": "Guam",
                "native": "Guam",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 95,
                "code": "GW",
                "name": "Guinea-Bissau",
                "native": "Guinea-Bissau",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 96,
                "code": "GY",
                "name": "Guyana",
                "native": "Guyana",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 97,
                "code": "HK",
                "name": "Hong Kong SAR China",
                "native": "Hong Kong SAR China",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 98,
                "code": "HM",
                "name": "Heard & McDonald Islands",
                "native": "Heard & McDonald Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 99,
                "code": "HN",
                "name": "Honduras",
                "native": "Honduras",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 100,
                "code": "HR",
                "name": "Croatia",
                "native": "Croatia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 101,
                "code": "HT",
                "name": "Haiti",
                "native": "Haiti",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 102,
                "code": "HU",
                "name": "Hungary",
                "native": "Hungary",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 103,
                "code": "ID",
                "name": "Indonesia",
                "native": "Indonesia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 104,
                "code": "IE",
                "name": "Ireland",
                "native": "Ireland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 105,
                "code": "IL",
                "name": "Israel",
                "native": "Israel",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 106,
                "code": "IM",
                "name": "Isle of Man",
                "native": "Isle of Man",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 107,
                "code": "IN",
                "name": "India",
                "native": "India",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 108,
                "code": "IO",
                "name": "British Indian Ocean Territory",
                "native": "British Indian Ocean Territory",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 109,
                "code": "IQ",
                "name": "Iraq",
                "native": "Iraq",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 110,
                "code": "IR",
                "name": "Iran",
                "native": "Iran",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 111,
                "code": "IS",
                "name": "Iceland",
                "native": "Iceland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 112,
                "code": "IT",
                "name": "Italy",
                "native": "Italy",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 113,
                "code": "JE",
                "name": "Jersey",
                "native": "Jersey",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 114,
                "code": "JM",
                "name": "Jamaica",
                "native": "Jamaica",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 115,
                "code": "JO",
                "name": "Jordan",
                "native": "Jordan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 116,
                "code": "KE",
                "name": "Kenya",
                "native": "Kenya",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 117,
                "code": "KG",
                "name": "Kyrgyzstan",
                "native": "Kyrgyzstan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 118,
                "code": "KH",
                "name": "Cambodia",
                "native": "Cambodia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 119,
                "code": "KI",
                "name": "Kiribati",
                "native": "Kiribati",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 120,
                "code": "KM",
                "name": "Comoros",
                "native": "Comoros",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 121,
                "code": "KN",
                "name": "St. Kitts & Nevis",
                "native": "St. Kitts & Nevis",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 122,
                "code": "KP",
                "name": "North Korea",
                "native": "North Korea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 123,
                "code": "KR",
                "name": "South Korea",
                "native": "South Korea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 124,
                "code": "KW",
                "name": "Kuwait",
                "native": "Kuwait",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 125,
                "code": "KY",
                "name": "Cayman Islands",
                "native": "Cayman Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 126,
                "code": "KZ",
                "name": "Kazakhstan",
                "native": "Kazakhstan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 127,
                "code": "LA",
                "name": "Laos",
                "native": "Laos",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 128,
                "code": "LB",
                "name": "Lebanon",
                "native": "Lebanon",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 129,
                "code": "LC",
                "name": "St. Lucia",
                "native": "St. Lucia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 130,
                "code": "LI",
                "name": "Liechtenstein",
                "native": "Liechtenstein",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 131,
                "code": "LK",
                "name": "Sri Lanka",
                "native": "Sri Lanka",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 132,
                "code": "LR",
                "name": "Liberia",
                "native": "Liberia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 133,
                "code": "LS",
                "name": "Lesotho",
                "native": "Lesotho",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 134,
                "code": "LT",
                "name": "Lithuania",
                "native": "Lithuania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 135,
                "code": "LU",
                "name": "Luxembourg",
                "native": "Luxembourg",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 136,
                "code": "LV",
                "name": "Latvia",
                "native": "Latvia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 137,
                "code": "LY",
                "name": "Libya",
                "native": "Libya",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 138,
                "code": "MA",
                "name": "Morocco",
                "native": "Morocco",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 139,
                "code": "MC",
                "name": "Monaco",
                "native": "Monaco",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 140,
                "code": "MD",
                "name": "Moldova",
                "native": "Moldova",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 141,
                "code": "ME",
                "name": "Montenegro",
                "native": "Montenegro",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 142,
                "code": "MF",
                "name": "St. Martin",
                "native": "St. Martin",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 143,
                "code": "MG",
                "name": "Madagascar",
                "native": "Madagascar",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 144,
                "code": "MH",
                "name": "Marshall Islands",
                "native": "Marshall Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 145,
                "code": "MK",
                "name": "North Macedonia",
                "native": "North Macedonia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 146,
                "code": "ML",
                "name": "Mali",
                "native": "Mali",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 147,
                "code": "MM",
                "name": "Myanmar (Burma)",
                "native": "Myanmar (Burma)",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 148,
                "code": "MN",
                "name": "Mongolia",
                "native": "Mongolia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 149,
                "code": "MO",
                "name": "Macao SAR China",
                "native": "Macao SAR China",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 150,
                "code": "MP",
                "name": "Northern Mariana Islands",
                "native": "Northern Mariana Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 151,
                "code": "MQ",
                "name": "Martinique",
                "native": "Martinique",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 152,
                "code": "MR",
                "name": "Mauritania",
                "native": "Mauritania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 153,
                "code": "MS",
                "name": "Montserrat",
                "native": "Montserrat",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 154,
                "code": "MT",
                "name": "Malta",
                "native": "Malta",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 155,
                "code": "MU",
                "name": "Mauritius",
                "native": "Mauritius",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 156,
                "code": "MV",
                "name": "Maldives",
                "native": "Maldives",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 157,
                "code": "MW",
                "name": "Malawi",
                "native": "Malawi",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 158,
                "code": "MX",
                "name": "Mexico",
                "native": "Mexico",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 159,
                "code": "MY",
                "name": "Malaysia",
                "native": "Malaysia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 160,
                "code": "MZ",
                "name": "Mozambique",
                "native": "Mozambique",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 161,
                "code": "NA",
                "name": "Namibia",
                "native": "Namibia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 162,
                "code": "NC",
                "name": "New Caledonia",
                "native": "New Caledonia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 163,
                "code": "NE",
                "name": "Niger",
                "native": "Niger",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 164,
                "code": "NF",
                "name": "Norfolk Island",
                "native": "Norfolk Island",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 165,
                "code": "NG",
                "name": "Nigeria",
                "native": "Nigeria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 166,
                "code": "NI",
                "name": "Nicaragua",
                "native": "Nicaragua",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 167,
                "code": "NL",
                "name": "Netherlands",
                "native": "Netherlands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 168,
                "code": "NO",
                "name": "Norway",
                "native": "Norway",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 169,
                "code": "NP",
                "name": "Nepal",
                "native": "Nepal",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 170,
                "code": "NR",
                "name": "Nauru",
                "native": "Nauru",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 171,
                "code": "NU",
                "name": "Niue",
                "native": "Niue",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 172,
                "code": "NZ",
                "name": "New Zealand",
                "native": "New Zealand",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 173,
                "code": "OM",
                "name": "Oman",
                "native": "Oman",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 174,
                "code": "PA",
                "name": "Panama",
                "native": "Panama",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 175,
                "code": "PE",
                "name": "Peru",
                "native": "Peru",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 176,
                "code": "PF",
                "name": "French Polynesia",
                "native": "French Polynesia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 177,
                "code": "PG",
                "name": "Papua New Guinea",
                "native": "Papua New Guinea",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 178,
                "code": "PH",
                "name": "Philippines",
                "native": "Philippines",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 179,
                "code": "PK",
                "name": "Pakistan",
                "native": "Pakistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 180,
                "code": "PL",
                "name": "Poland",
                "native": "Poland",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 181,
                "code": "PM",
                "name": "St. Pierre & Miquelon",
                "native": "St. Pierre & Miquelon",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 182,
                "code": "PN",
                "name": "Pitcairn Islands",
                "native": "Pitcairn Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 183,
                "code": "PR",
                "name": "Puerto Rico",
                "native": "Puerto Rico",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 184,
                "code": "PS",
                "name": "Palestinian Territories",
                "native": "Palestinian Territories",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 185,
                "code": "PT",
                "name": "Portugal",
                "native": "Portugal",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 186,
                "code": "PW",
                "name": "Palau",
                "native": "Palau",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 187,
                "code": "PY",
                "name": "Paraguay",
                "native": "Paraguay",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 188,
                "code": "QA",
                "name": "Qatar",
                "native": "Qatar",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 189,
                "code": "RE",
                "name": "Réunion",
                "native": "Réunion",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 190,
                "code": "RO",
                "name": "Romania",
                "native": "Romania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 191,
                "code": "RS",
                "name": "Serbia",
                "native": "Serbia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 192,
                "code": "RU",
                "name": "Russia",
                "native": "Russia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 193,
                "code": "RW",
                "name": "Rwanda",
                "native": "Rwanda",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 194,
                "code": "SA",
                "name": "Saudi Arabia",
                "native": "Saudi Arabia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 195,
                "code": "SB",
                "name": "Solomon Islands",
                "native": "Solomon Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 196,
                "code": "SC",
                "name": "Seychelles",
                "native": "Seychelles",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 197,
                "code": "SD",
                "name": "Sudan",
                "native": "Sudan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 198,
                "code": "SE",
                "name": "Sweden",
                "native": "Sweden",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 199,
                "code": "SG",
                "name": "Singapore",
                "native": "Singapore",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 200,
                "code": "SH",
                "name": "St. Helena",
                "native": "St. Helena",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 201,
                "code": "SI",
                "name": "Slovenia",
                "native": "Slovenia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 202,
                "code": "SJ",
                "name": "Svalbard & Jan Mayen",
                "native": "Svalbard & Jan Mayen",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 203,
                "code": "SK",
                "name": "Slovakia",
                "native": "Slovakia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 204,
                "code": "SL",
                "name": "Sierra Leone",
                "native": "Sierra Leone",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 205,
                "code": "SM",
                "name": "San Marino",
                "native": "San Marino",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 206,
                "code": "SN",
                "name": "Senegal",
                "native": "Senegal",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 207,
                "code": "SO",
                "name": "Somalia",
                "native": "Somalia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 208,
                "code": "SR",
                "name": "Suriname",
                "native": "Suriname",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 209,
                "code": "SS",
                "name": "South Sudan",
                "native": "South Sudan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 210,
                "code": "ST",
                "name": "São Tomé & Príncipe",
                "native": "São Tomé & Príncipe",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 211,
                "code": "SV",
                "name": "El Salvador",
                "native": "El Salvador",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 212,
                "code": "SX",
                "name": "Sint Maarten",
                "native": "Sint Maarten",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 213,
                "code": "SY",
                "name": "Syria",
                "native": "Syria",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 214,
                "code": "SZ",
                "name": "Eswatini",
                "native": "Eswatini",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 215,
                "code": "TC",
                "name": "Turks & Caicos Islands",
                "native": "Turks & Caicos Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 216,
                "code": "TD",
                "name": "Chad",
                "native": "Chad",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 217,
                "code": "TF",
                "name": "French Southern Territories",
                "native": "French Southern Territories",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 218,
                "code": "TG",
                "name": "Togo",
                "native": "Togo",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 219,
                "code": "TH",
                "name": "Thailand",
                "native": "Thailand",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 220,
                "code": "TJ",
                "name": "Tajikistan",
                "native": "Tajikistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 221,
                "code": "TK",
                "name": "Tokelau",
                "native": "Tokelau",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 222,
                "code": "TL",
                "name": "Timor-Leste",
                "native": "Timor-Leste",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 223,
                "code": "TM",
                "name": "Turkmenistan",
                "native": "Turkmenistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 224,
                "code": "TN",
                "name": "Tunisia",
                "native": "Tunisia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 225,
                "code": "TO",
                "name": "Tonga",
                "native": "Tonga",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 226,
                "code": "TR",
                "name": "Türkiye",
                "native": "Türkiye",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 227,
                "code": "TT",
                "name": "Trinidad & Tobago",
                "native": "Trinidad & Tobago",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 228,
                "code": "TV",
                "name": "Tuvalu",
                "native": "Tuvalu",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 229,
                "code": "TW",
                "name": "Taiwan",
                "native": "Taiwan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 230,
                "code": "TZ",
                "name": "Tanzania",
                "native": "Tanzania",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 231,
                "code": "UA",
                "name": "Ukraine",
                "native": "Ukraine",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 232,
                "code": "UG",
                "name": "Uganda",
                "native": "Uganda",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 233,
                "code": "UM",
                "name": "U.S. Outlying Islands",
                "native": "U.S. Outlying Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 234,
                "code": "UY",
                "name": "Uruguay",
                "native": "Uruguay",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 235,
                "code": "UZ",
                "name": "Uzbekistan",
                "native": "Uzbekistan",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 236,
                "code": "VA",
                "name": "Vatican City",
                "native": "Vatican City",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 237,
                "code": "VC",
                "name": "St. Vincent & Grenadines",
                "native": "St. Vincent & Grenadines",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 238,
                "code": "VE",
                "name": "Venezuela",
                "native": "Venezuela",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 239,
                "code": "VG",
                "name": "British Virgin Islands",
                "native": "British Virgin Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 240,
                "code": "VI",
                "name": "U.S. Virgin Islands",
                "native": "U.S. Virgin Islands",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 241,
                "code": "VN",
                "name": "Vietnam",
                "native": "Vietnam",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 242,
                "code": "VU",
                "name": "Vanuatu",
                "native": "Vanuatu",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 243,
                "code": "WF",
                "name": "Wallis & Futuna",
                "native": "Wallis & Futuna",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 244,
                "code": "WS",
                "name": "Samoa",
                "native": "Samoa",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 245,
                "code": "YE",
                "name": "Yemen",
                "native": "Yemen",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 246,
                "code": "YT",
                "name": "Mayotte",
                "native": "Mayotte",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 247,
                "code": "ZA",
                "name": "South Africa",
                "native": "South Africa",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 248,
                "code": "ZM",
                "name": "Zambia",
                "native": "Zambia",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            },
            {
                "id": 249,
                "code": "ZW",
                "name": "Zimbabwe",
                "native": "Zimbabwe",
                "created_at": "2026-09-04T04:27:19.000000Z",
                "updated_at": "2026-09-04T04:27:19.000000Z"
            }
        ]
    }
}
 

Request      

GET api/public/countries

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/public/currencies

Example request:
curl --request GET \
    --get "https://forgefile.com/api/public/currencies" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/public/currencies"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-051974c7561447876c7410b348cfd50c-c765ffdb71da8caa-01
x-trace-id: 051974c7561447876c7410b348cfd50c
x-span-id: c765ffdb71da8caa
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496165
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5f449693-ffff-4cd1-8f2a-6cbda84a2423
 

{
    "success": true,
    "message": "Success",
    "data": {
        "currencies": [
            {
                "id": 1,
                "code": "USD",
                "name": "US Dollar",
                "native": "US Dollar",
                "symbol": "$",
                "symbol_first": true,
                "deleted_at": null,
                "deleted_by": null,
                "decimal_places": 2,
                "thousands_separator": ",",
                "decimal_separator": ".",
                "is_base": false,
                "exchange_rate": "1.000000",
                "last_updated": null,
                "payment_methods": null,
                "regions": null,
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z",
                "is_active": true
            },
            {
                "id": 2,
                "code": "EUR",
                "name": "Euro",
                "native": "Euro",
                "symbol": "",
                "symbol_first": true,
                "deleted_at": null,
                "deleted_by": null,
                "decimal_places": 2,
                "thousands_separator": ",",
                "decimal_separator": ".",
                "is_base": false,
                "exchange_rate": "1.000000",
                "last_updated": null,
                "payment_methods": null,
                "regions": null,
                "created_at": "2026-08-23T05:25:30.000000Z",
                "updated_at": "2026-08-23T05:25:30.000000Z",
                "is_active": true
            }
        ]
    }
}
 

Request      

GET api/public/currencies

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Gets notification settings for API

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/notifications/preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/notifications/preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: dd0284a9-0bcb-4465-88a1-5d4fbdc18036
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.791684Z",
    "context": {
        "path": "/api/notifications/preferences",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/notifications/preferences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Updates notification settings via API

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/notifications/preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/notifications/preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/notifications/preferences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Gets information about notification channel availability

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/notifications/channel-availability" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/notifications/channel-availability"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e68d8fe2-f23f-43a9-8630-f15e771a7c44
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.795274Z",
    "context": {
        "path": "/api/notifications/channel-availability",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/notifications/channel-availability

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get real-time dashboard metrics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/dashboard/realtime" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"time_range\": \"90d\",
    \"content_types\": [
        \"email\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/analytics/dashboard/realtime"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "time_range": "90d",
    "content_types": [
        "email"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9a25a171-9539-4be7-9d90-8b508beddb2b
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.807864Z",
    "context": {
        "path": "/api/analytics/dashboard/realtime",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/dashboard/realtime

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

time_range   string  optional    

Example: 90d

Must be one of:
  • 1h
  • 24h
  • 7d
  • 30d
  • 90d
  • 1y
content_types   string[]  optional    
Must be one of:
  • article
  • video
  • social_post
  • infographic
  • blog_post
  • email

Get predictive analytics insights

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/insights/predictive" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"types\": [
        \"performance\"
    ],
    \"time_range\": \"30d\"
}"
const url = new URL(
    "https://forgefile.com/api/analytics/insights/predictive"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "types": [
        "performance"
    ],
    "time_range": "30d"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 49535f42-9889-4b51-b522-aa004d701ac9
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.810524Z",
    "context": {
        "path": "/api/analytics/insights/predictive",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/insights/predictive

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

types   string[]  optional    
Must be one of:
  • performance
  • trends
  • recommendations
time_range   string  optional    

Example: 30d

Must be one of:
  • 7d
  • 30d
  • 90d
  • 1y

Get user's custom dashboards

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/dashboards" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/dashboards"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4038e77a-2e59-49bb-b76a-54dcafe067e6
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.813367Z",
    "context": {
        "path": "/api/analytics/dashboards",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/dashboards

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create custom dashboard

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/analytics/dashboards" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"layout\": {
        \"type\": \"masonry\",
        \"columns\": 16
    },
    \"is_public\": true,
    \"is_default\": true,
    \"widgets\": [
        {
            \"type\": \"architecto\",
            \"title\": \"n\",
            \"position\": {
                \"x\": 27,
                \"y\": 39
            },
            \"size\": {
                \"width\": 67,
                \"height\": 66
            }
        }
    ]
}"
const url = new URL(
    "https://forgefile.com/api/analytics/dashboards"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "layout": {
        "type": "masonry",
        "columns": 16
    },
    "is_public": true,
    "is_default": true,
    "widgets": [
        {
            "type": "architecto",
            "title": "n",
            "position": {
                "x": 27,
                "y": 39
            },
            "size": {
                "width": 67,
                "height": 66
            }
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/analytics/dashboards

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

description   string  optional    

Must not be greater than 1000 characters. Example: Et animi quos velit et fugiat.

layout   object     
type   string     

Example: masonry

Must be one of:
  • grid
  • masonry
  • flex
columns   integer     

Must be at least 1. Must not be greater than 24. Example: 16

widgets   object[]  optional    
type   string     

Example: architecto

title   string  optional    

Must not be greater than 255 characters. Example: n

position   object     
x   integer     

Must be at least 0. Example: 27

y   integer     

Must be at least 0. Example: 39

size   object  optional    
width   integer  optional    

Must be at least 1. Example: 67

height   integer  optional    

Must be at least 1. Example: 66

config   object  optional    
filters   object  optional    
is_public   boolean  optional    

Example: true

is_default   boolean  optional    

Example: true

Update custom dashboard

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/analytics/dashboards/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"layout\": {
        \"type\": \"grid\",
        \"columns\": 8
    },
    \"is_public\": false,
    \"widgets\": [
        {
            \"type\": \"architecto\",
            \"title\": \"n\",
            \"position\": {
                \"x\": 84,
                \"y\": 12
            },
            \"size\": {
                \"width\": 27,
                \"height\": 35
            }
        }
    ]
}"
const url = new URL(
    "https://forgefile.com/api/analytics/dashboards/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "layout": {
        "type": "grid",
        "columns": 8
    },
    "is_public": false,
    "widgets": [
        {
            "type": "architecto",
            "title": "n",
            "position": {
                "x": 84,
                "y": 12
            },
            "size": {
                "width": 27,
                "height": 35
            }
        }
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/analytics/dashboards/{dashboardId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

dashboardId   string     

Example: architecto

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

description   string  optional    

Must not be greater than 1000 characters. Example: Et animi quos velit et fugiat.

layout   object  optional    
type   string  optional    

Example: grid

Must be one of:
  • grid
  • masonry
  • flex
columns   integer  optional    

Must be at least 1. Must not be greater than 24. Example: 8

widgets   object[]  optional    
type   string  optional    

Example: architecto

title   string  optional    

Must not be greater than 255 characters. Example: n

position   object  optional    
x   integer  optional    

Must be at least 0. Example: 84

y   integer  optional    

Must be at least 0. Example: 12

size   object  optional    
width   integer  optional    

Must be at least 1. Example: 27

height   integer  optional    

Must be at least 1. Example: 35

config   object  optional    
filters   object  optional    
is_public   boolean  optional    

Example: false

Delete custom dashboard

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/analytics/dashboards/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/dashboards/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/analytics/dashboards/{dashboardId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

dashboardId   string     

Example: architecto

GET api/analytics/reports

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/reports" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"report_type\": \"b\",
    \"is_public\": false,
    \"is_active\": false,
    \"search\": \"n\"
}"
const url = new URL(
    "https://forgefile.com/api/analytics/reports"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "report_type": "b",
    "is_public": false,
    "is_active": false,
    "search": "n"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3285e766-a42c-45be-9a40-f58df54609d5
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.837634Z",
    "context": {
        "path": "/api/analytics/reports",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/reports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

report_type   string  optional    

Must not be greater than 64 characters. Example: b

is_public   boolean  optional    

Example: false

is_active   boolean  optional    

Example: false

search   string  optional    

Must not be greater than 255 characters. Example: n

Generate advanced report

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/analytics/reports/generate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"type\": \"comparison\",
    \"time_range\": \"90d\",
    \"include_charts\": true
}"
const url = new URL(
    "https://forgefile.com/api/analytics/reports/generate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "type": "comparison",
    "time_range": "90d",
    "include_charts": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/analytics/reports/generate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

type   string     

Example: comparison

Must be one of:
  • performance
  • content
  • audience
  • comparison
  • predictive
  • general
time_range   string  optional    

Example: 90d

Must be one of:
  • 7d
  • 30d
  • 90d
  • 1y
include_charts   boolean  optional    

Example: true

POST api/analytics/reports/{reportId}/execute

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/analytics/reports/architecto/execute" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/reports/architecto/execute"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/analytics/reports/{reportId}/execute

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

reportId   string     

Example: architecto

GET api/analytics/reports/{reportId}/executions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/reports/architecto/executions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"b\",
    \"execution_type\": \"n\"
}"
const url = new URL(
    "https://forgefile.com/api/analytics/reports/architecto/executions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "status": "b",
    "execution_type": "n"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 187632e8-b136-4c22-b7f6-79203f1226ce
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.845256Z",
    "context": {
        "path": "/api/analytics/reports/architecto/executions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/reports/{reportId}/executions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

reportId   string     

Example: architecto

Body Parameters

status   string  optional    

Must not be greater than 32 characters. Example: b

execution_type   string  optional    

Must not be greater than 32 characters. Example: n

Export report

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/reports/architecto/export/pdf|excel|csv|json" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"format\": \"pdf\"
}"
const url = new URL(
    "https://forgefile.com/api/analytics/reports/architecto/export/pdf|excel|csv|json"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "format": "pdf"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-2bbb99b916e8ef276fa4e41024f3a236-92ce660d04a80b66-01
x-trace-id: 2bbb99b916e8ef276fa4e41024f3a236
x-span-id: 92ce660d04a80b66
x-sampled: true
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cb29d1aa-dc13-4449-9e0d-963ca0be1635
set-cookie: forgefile_locale=eyJpdiI6InM5ZFphZmpqSlF6Mko5elYyWmFLZ3c9PSIsInZhbHVlIjoiUWxPSDVjZyt1R3luNlNHdFQ5M2ZHVFN6OUxuT3ZkNFA3Z29qa0NJUEY0Sk1PZzFDTmZHMUZNcXZWcDBGbHRkdyIsIm1hYyI6IjIzMjJkODgyN2UwNjUxZWUyNGY0ZTQyNDgzYjNlZjQ2YjA0NDgyYjgxOWQyNzdlMTE0YjI4MDgxZDQ0OTUxOTAiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31536000; path=/; samesite=lax; XSRF-TOKEN=eyJpdiI6ImVobjB0OURqR1RJV0JTOTRtLzVOWkE9PSIsInZhbHVlIjoiVWNwZlB3bThBYWZNRGJwSTNYd0JuTnF4T0RncUczdnR2YS9rMkhuVEdRRXh4UXE3RGdOWlN6TGIrUUhVam1hZlNIRkUyNkFZcVFsZ291L2Y2RUJuMCtreDBLcXlNYy81bXpNeDAwOTc1dm0xL3FwMGNITUhWVkFUaUh3cGhzWlQiLCJtYWMiOiJhZDViMDM4OTI4YTY5NTUyN2YxNTQzNzE4ZGViOTY0YjhmNzIxYWMyZTQ0ZDJlMjExNGUwNDg3NDlhNmJjYTY5IiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:25 GMT; Max-Age=86400; path=/; samesite=lax; forgefile_session=eyJpdiI6Ik0vWmwrdkVZc2laNjRvcm1TZnVSd1E9PSIsInZhbHVlIjoiVmh6d0FaOSt0akh3SUkrL3VlK2JiVFlGS0J0aXpkbmxEZ3Mva3ZJeTNZVEk1RnBMVVh0STQ3L2R3QkM2S0hoUSt0UkJudlplY05OQVdsajl5Uk9Na0ozT0pBMXo1bTNocU43eC9EaER2MlA2NWpxci8vSTlKbTNJWEIwVGY1R3giLCJtYWMiOiJkNzlmZjlkNGI3YjVlMmU4ZGI5YWExY2RjZmJiOTc2Y2FiYjJlNzlkYjI4MmJkNGE1OTBmZmIyMWQwMDFkNTE3IiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:25 GMT; Max-Age=86400; path=/; httponly; samesite=lax; guest_token=eyJpdiI6Im1HSU5wZWNnWnJKdmhHNDdRNlExM0E9PSIsInZhbHVlIjoiRklUMXVrVE82RjNmMnJ3cENQNy9LMTRJRFB2a1Q5cStCeCtpaFduaThEZTI1Qi92Qm40VC9qb0V1ajhvYXFtZnl1S0g1akZaYVBBMjBkR1FyY1EzelVrb2YvN010OG9rTmRueHRqM08vaW89IiwibWFjIjoiMmUxZTJiYTFhMDE2N2IwZWYxMDQxNzVmYTk5MDQ0MWQxMTVlMmM5N2RlMTQ3MTVhMmQ4YTU5NzhkOWFlYTkzYiIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591998; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "unauthorized",
    "message": "Unauthorized"
}
 

Request      

GET api/analytics/reports/{reportId}/export/{format}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

reportId   string     

Example: architecto

format   string     

Example: pdf|excel|csv|json

Body Parameters

format   string     

Example: pdf

Must be one of:
  • pdf
  • excel
  • csv
  • json

GET api/analytics/reports/statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/reports/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/reports/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e2e6f62d-ad59-48bc-87d0-3b9990edfdbd
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.853973Z",
    "context": {
        "path": "/api/analytics/reports/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/reports/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/analytics/heatmaps/data

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/heatmaps/data" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"page_url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",
    \"event_type\": \"page_views\",
    \"device_type\": \"mobile\",
    \"start_date\": \"2026-09-04T04:28:25\",
    \"end_date\": \"2052-09-27\"
}"
const url = new URL(
    "https://forgefile.com/api/analytics/heatmaps/data"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "page_url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
    "event_type": "page_views",
    "device_type": "mobile",
    "start_date": "2026-09-04T04:28:25",
    "end_date": "2052-09-27"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 94668d8a-8570-4e8a-bbd1-62b1025d2a98
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.866389Z",
    "context": {
        "path": "/api/analytics/heatmaps/data",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/heatmaps/data

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

page_url   string     

Must not be greater than 2048 characters. Example: http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html

event_type   string  optional    

Example: page_views

Must be one of:
  • clicks
  • scrolls
  • moves
  • page_views
device_type   string  optional    

Example: mobile

Must be one of:
  • desktop
  • tablet
  • mobile
start_date   string  optional    

Must be a valid date. Example: 2026-09-04T04:28:25

end_date   string  optional    

Must be a valid date. Must be a date after or equal to start_date. Example: 2052-09-27

GET api/analytics/heatmaps/statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/heatmaps/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"page_url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",
    \"start_date\": \"2026-09-04T04:28:25\",
    \"end_date\": \"2052-09-27\"
}"
const url = new URL(
    "https://forgefile.com/api/analytics/heatmaps/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "page_url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
    "start_date": "2026-09-04T04:28:25",
    "end_date": "2052-09-27"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9e34dc15-ebc0-4027-8b6e-dd9bbbce703d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.869911Z",
    "context": {
        "path": "/api/analytics/heatmaps/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/heatmaps/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

page_url   string  optional    

Must not be greater than 2048 characters. Example: http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html

start_date   string  optional    

Must be a valid date. Example: 2026-09-04T04:28:25

end_date   string  optional    

Must be a valid date. Must be a date after or equal to start_date. Example: 2052-09-27

POST api/analytics/heatmaps/export

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/analytics/heatmaps/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"format\": \"json\",
    \"page_url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",
    \"event_type\": \"scrolls\",
    \"device_type\": \"tablet\",
    \"start_date\": \"2026-09-04T04:28:25\",
    \"end_date\": \"2052-09-27\"
}"
const url = new URL(
    "https://forgefile.com/api/analytics/heatmaps/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "format": "json",
    "page_url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
    "event_type": "scrolls",
    "device_type": "tablet",
    "start_date": "2026-09-04T04:28:25",
    "end_date": "2052-09-27"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/analytics/heatmaps/export

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

format   string  optional    

Example: json

Must be one of:
  • csv
  • json
page_url   string  optional    

Must not be greater than 2048 characters. Example: http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html

event_type   string  optional    

Example: scrolls

Must be one of:
  • clicks
  • scrolls
  • moves
  • page_views
device_type   string  optional    

Example: tablet

Must be one of:
  • desktop
  • tablet
  • mobile
start_date   string  optional    

Must be a valid date. Example: 2026-09-04T04:28:25

end_date   string  optional    

Must be a valid date. Must be a date after or equal to start_date. Example: 2052-09-27

Get comparative analysis

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/analytics/analysis/comparative" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"period\",
    \"baseline\": [],
    \"comparison\": []
}"
const url = new URL(
    "https://forgefile.com/api/analytics/analysis/comparative"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "period",
    "baseline": [],
    "comparison": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/analytics/analysis/comparative

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

type   string     

Example: period

Must be one of:
  • period
  • content
  • audience
baseline   object     
comparison   object     

Get performance predictions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/predictions/performance" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prediction_type\": \"engagement_rate\",
    \"time_range\": \"7d\",
    \"prediction_horizon\": \"3d\"
}"
const url = new URL(
    "https://forgefile.com/api/analytics/predictions/performance"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prediction_type": "engagement_rate",
    "time_range": "7d",
    "prediction_horizon": "3d"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7d1c606c-ba0f-4d06-95a5-e0622943422a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.886195Z",
    "context": {
        "path": "/api/analytics/predictions/performance",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/predictions/performance

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

prediction_type   string  optional    

Example: engagement_rate

Must be one of:
  • engagement_rate
  • conversion_rate
  • page_views
time_range   string  optional    

Example: 7d

Must be one of:
  • 7d
  • 30d
  • 90d
prediction_horizon   string  optional    

Example: 3d

Must be one of:
  • 1d
  • 3d
  • 7d
  • 14d
  • 30d

Get user behavior analytics API

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/user-behavior" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/user-behavior"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3aed87f8-3f13-4e0f-bbdd-8e72ab307ace
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.910082Z",
    "context": {
        "path": "/api/analytics/user-behavior",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/user-behavior

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get real-time performance metrics API

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/performance-metrics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/performance-metrics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: baada1bc-1b8e-4eda-b47a-5a4fda41285f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.923886Z",
    "context": {
        "path": "/api/analytics/performance-metrics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/performance-metrics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get analytics alerts

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/alerts" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/alerts"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2022f304-f194-4593-975e-7716a95087a0
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.926663Z",
    "context": {
        "path": "/api/analytics/alerts",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/alerts

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Configure analytics alerts

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/analytics/alerts/configure" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"alert_types\": [
        \"architecto\"
    ],
    \"severity_filter\": [
        \"warning\"
    ],
    \"auto_dismiss\": true,
    \"notification_channels\": [
        \"in_app\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/analytics/alerts/configure"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "alert_types": [
        "architecto"
    ],
    "severity_filter": [
        "warning"
    ],
    "auto_dismiss": true,
    "notification_channels": [
        "in_app"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/analytics/alerts/configure

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

alert_types   string[]  optional    
severity_filter   string[]  optional    
Must be one of:
  • critical
  • warning
  • info
auto_dismiss   boolean  optional    

Example: true

notification_channels   string[]  optional    
Must be one of:
  • email
  • push
  • in_app

Get accessibility metrics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/accessibility-metrics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/accessibility-metrics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 558db1c2-3df9-495b-884f-d3a20e355665
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.930648Z",
    "context": {
        "path": "/api/analytics/accessibility-metrics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/accessibility-metrics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get keyboard shortcuts

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/keyboard-shortcuts" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/keyboard-shortcuts"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c2336dfc-61ec-4f5f-9679-54800c045ec2
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.933731Z",
    "context": {
        "path": "/api/analytics/keyboard-shortcuts",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/keyboard-shortcuts

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get accessibility compliance report

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/accessibility-compliance" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/accessibility-compliance"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4249e04a-2e2e-4bf6-a346-49be3a8d01c3
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.945159Z",
    "context": {
        "path": "/api/analytics/accessibility-compliance",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/accessibility-compliance

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get accessibility preferences for current user

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/accessibility-preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/accessibility-preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3296b759-223b-4120-8e7b-6d9ee7e6e6b1
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.947747Z",
    "context": {
        "path": "/api/analytics/accessibility-preferences",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/accessibility-preferences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get keyboard shortcuts help

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/keyboard-shortcuts-help" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/keyboard-shortcuts-help"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5019ed6f-74ba-43fc-9390-49dce45f75e9
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.950035Z",
    "context": {
        "path": "/api/analytics/keyboard-shortcuts-help",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/keyboard-shortcuts-help

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get integration data

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/integration/data" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"metrics\": [
        \"architecto\"
    ],
    \"time_range\": \"1h\",
    \"format\": \"xml\"
}"
const url = new URL(
    "https://forgefile.com/api/analytics/integration/data"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "metrics": [
        "architecto"
    ],
    "time_range": "1h",
    "format": "xml"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1ab63821-41ce-4a3a-ac40-240b6946fd4e
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.952626Z",
    "context": {
        "path": "/api/analytics/integration/data",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/integration/data

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

metrics   string[]  optional    
time_range   string  optional    

Example: 1h

Must be one of:
  • 1h
  • 24h
  • 7d
  • 30d
  • 90d
  • 1y
format   string  optional    

Example: xml

Must be one of:
  • json
  • csv
  • xml

Get analytics metadata

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/metadata" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/metadata"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4f2d75c3-20a4-47a2-b496-422f6d3c3dcc
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.955523Z",
    "context": {
        "path": "/api/analytics/metadata",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/metadata

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Perform advanced analytics query

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/analytics/queries/advanced" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"architecto\",
    \"limit\": 22,
    \"offset\": 84
}"
const url = new URL(
    "https://forgefile.com/api/analytics/queries/advanced"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "architecto",
    "limit": 22,
    "offset": 84
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/analytics/queries/advanced

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

type   string     

Example: architecto

filters   object  optional    
aggregations   object  optional    
limit   integer  optional    

Must be at least 1. Must not be greater than 10000. Example: 22

offset   integer  optional    

Must be at least 0. Example: 84

Get analytics health

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/health" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/health"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f04ee409-e7c2-4a46-aa67-c311b078c1ac
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:25.959726Z",
    "context": {
        "path": "/api/analytics/health",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/health

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get analytics configuration

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/analytics/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/analytics/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1cde1eae-562e-48ce-b16a-bdd4f9716179
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.070762Z",
    "context": {
        "path": "/api/analytics/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/analytics/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Refresh analytics cache

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/analytics/cache/refresh" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"types\": [
        \"reports\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/analytics/cache/refresh"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "types": [
        "reports"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/analytics/cache/refresh

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

types   string[]  optional    
Must be one of:
  • all
  • dashboard
  • metrics
  • reports

Get all enabled currencies

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/currencies" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/currencies"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-6643978f4c177643d6146feb5d4816a6-5e7b8ec18a039e9e-01
x-trace-id: 6643978f4c177643d6146feb5d4816a6
x-span-id: 5e7b8ec18a039e9e
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 79c6ee5b-73a6-4b40-8e35-39089027ba84
 

{
    "success": true,
    "message": "Currencies retrieved successfully",
    "data": [
        {
            "code": "EUR",
            "name": "Euro",
            "symbol": "",
            "decimal_places": 2,
            "symbol_position": "first",
            "thousands_separator": ",",
            "decimal_separator": ".",
            "is_enabled": true,
            "is_base": false,
            "exchange_rate": "1.000000",
            "last_updated": null,
            "payment_methods": null,
            "regions": null
        },
        {
            "code": "USD",
            "name": "US Dollar",
            "symbol": "$",
            "decimal_places": 2,
            "symbol_position": "first",
            "thousands_separator": ",",
            "decimal_separator": ".",
            "is_enabled": true,
            "is_base": false,
            "exchange_rate": "1.000000",
            "last_updated": null,
            "payment_methods": null,
            "regions": null
        }
    ]
}
 

Request      

GET api/i18n/currencies

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get all enabled languages

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/languages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/languages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-0ece94e426d4773352db8fad4fec9758-fbb00f12ed152c00-01
x-trace-id: 0ece94e426d4773352db8fad4fec9758
x-span-id: fbb00f12ed152c00
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: df2a3a45-c544-4cc4-9ec1-7f9bd8822b24
 

{
    "success": true,
    "message": "Languages retrieved successfully",
    "data": []
}
 

Request      

GET api/i18n/languages

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Detect user language

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/languages/detect" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/languages/detect"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-e8db8b60e580562bb78ca812c380f18d-6b3e6f3e701b56f8-01
x-trace-id: e8db8b60e580562bb78ca812c380f18d
x-span-id: 6b3e6f3e701b56f8
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d331723b-a9bc-407a-81e1-a92c9148f763
 

{
    "success": true,
    "message": "Language detected successfully",
    "data": {
        "detected_language": "en",
        "language": {
            "code": "en",
            "name": "English",
            "native_name": "English",
            "locale": null,
            "currency_code": null,
            "is_enabled": false,
            "is_default": false,
            "is_rtl": false,
            "direction": "ltr",
            "regions": null,
            "translation_progress": 0,
            "translation_completeness": "incomplete",
            "last_updated": null
        }
    }
}
 

Request      

GET api/i18n/languages/detect

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get current locale

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/languages/current" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/languages/current"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-4ff3e406ad887983d1ff6188dc4c65b9-7d90a41d88c16cbc-01
x-trace-id: 4ff3e406ad887983d1ff6188dc4c65b9
x-span-id: 7d90a41d88c16cbc
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5daf143d-e131-4097-860e-e9998920aa17
 

{
    "success": true,
    "message": "Current locale retrieved successfully",
    "data": {
        "locale": "en",
        "language": {
            "code": "en",
            "name": "English",
            "native_name": "English",
            "locale": null,
            "currency_code": null,
            "is_enabled": false,
            "is_default": false,
            "is_rtl": false,
            "direction": "ltr",
            "regions": null,
            "translation_progress": 0,
            "translation_completeness": "incomplete",
            "last_updated": null
        }
    }
}
 

Request      

GET api/i18n/languages/current

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get internationalization configuration

deprecated:This controller has been refactored into smaller, focused controllers: - CurrencyController - currency methods (getCurrencies, getCurrency, convertCurrency, getExchangeRate, updateExchangeRates, getCurrenciesForRegion, getCurrenciesForPaymentMethod) - LocalizationController - language/locale methods (getLanguages, getLanguage, setLocale, getCurrentLocale, detectLanguage, getLanguagesForRegion) - RegionalPricingController - regional pricing methods (getRegionalPricing, applyRegionalPricing, getAllRegionalPricing) This controller is kept for backward compatibility but should not be used for new code. All methods have been moved to the appropriate specialized controllers. Only configuration methods (getConfiguration, getFrontendConfig) remain here.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/configuration" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/configuration"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-857c2c6b206f110cf35e99b0ed82a4a7-e389d050fb5cb65a-01
x-trace-id: 857c2c6b206f110cf35e99b0ed82a4a7
x-span-id: e389d050fb5cb65a
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f80f2673-1526-4bc0-937f-fd52da432a9e
 

{
    "success": true,
    "message": "Configuration retrieved successfully",
    "data": {
        "currencies": {
            "enabled": true,
            "default": "USD",
            "base": "USD",
            "auto_detect": true
        },
        "languages": {
            "enabled": true,
            "default": "en",
            "auto_detect": true
        },
        "regional_pricing": {
            "enabled": true
        },
        "compliance": {
            "gdpr": true,
            "ccpa": true,
            "lgpd": true,
            "pipeda": true
        },
        "payment_methods": {
            "stripe": {
                "enabled": true,
                "regions": [
                    "US",
                    "CA",
                    "GB",
                    "AU",
                    "DE",
                    "FR",
                    "IT",
                    "ES",
                    "NL",
                    "SE",
                    "NO",
                    "DK",
                    "FI",
                    "PL",
                    "CZ",
                    "HU",
                    "BR",
                    "MX",
                    "IN",
                    "CN",
                    "KR",
                    "SG",
                    "HK"
                ],
                "currencies": [
                    "USD",
                    "EUR",
                    "GBP",
                    "CAD",
                    "AUD",
                    "JPY",
                    "CHF",
                    "SEK",
                    "NOK",
                    "DKK",
                    "PLN",
                    "CZK",
                    "HUF",
                    "BRL",
                    "MXN",
                    "INR",
                    "CNY",
                    "KRW",
                    "SGD",
                    "HKD"
                ]
            },
            "paypal": {
                "enabled": true,
                "regions": [
                    "US",
                    "CA",
                    "GB",
                    "AU",
                    "DE",
                    "FR",
                    "IT",
                    "ES",
                    "NL",
                    "SE",
                    "NO",
                    "DK",
                    "FI",
                    "PL",
                    "CZ",
                    "HU",
                    "BR",
                    "MX",
                    "IN",
                    "CN",
                    "KR",
                    "SG",
                    "HK"
                ],
                "currencies": [
                    "USD",
                    "EUR",
                    "GBP",
                    "CAD",
                    "AUD",
                    "JPY",
                    "CHF",
                    "SEK",
                    "NOK",
                    "DKK",
                    "PLN",
                    "CZK",
                    "HUF",
                    "BRL",
                    "MXN",
                    "INR",
                    "CNY",
                    "KRW",
                    "SGD",
                    "HKD"
                ]
            },
            "paddle": {
                "enabled": true,
                "regions": [
                    "US",
                    "CA",
                    "GB",
                    "AU",
                    "DE",
                    "FR",
                    "IT",
                    "ES",
                    "NL",
                    "SE",
                    "NO",
                    "DK",
                    "FI",
                    "PL",
                    "CZ",
                    "HU",
                    "BR",
                    "MX",
                    "IN",
                    "CN",
                    "KR",
                    "SG",
                    "HK"
                ],
                "currencies": [
                    "USD",
                    "EUR",
                    "GBP",
                    "CAD",
                    "AUD",
                    "JPY",
                    "CHF",
                    "SEK",
                    "NOK",
                    "DKK",
                    "PLN",
                    "CZK",
                    "HUF",
                    "BRL",
                    "MXN",
                    "INR",
                    "CNY",
                    "KRW",
                    "SGD",
                    "HKD"
                ]
            },
            "alipay": {
                "enabled": true,
                "regions": [
                    "CN",
                    "HK",
                    "SG"
                ],
                "currencies": [
                    "CNY",
                    "HKD",
                    "SGD"
                ]
            },
            "wechat_pay": {
                "enabled": true,
                "regions": [
                    "CN"
                ],
                "currencies": [
                    "CNY"
                ]
            },
            "razorpay": {
                "enabled": true,
                "regions": [
                    "IN"
                ],
                "currencies": [
                    "INR"
                ]
            },
            "mercadopago": {
                "enabled": true,
                "regions": [
                    "BR",
                    "MX",
                    "AR",
                    "CL",
                    "CO",
                    "PE",
                    "UY"
                ],
                "currencies": [
                    "BRL",
                    "MXN",
                    "ARS",
                    "CLP",
                    "COP",
                    "PEN",
                    "UYU"
                ]
            }
        },
        "customer_support": {
            "enabled": true,
            "languages": [
                "en",
                "es",
                "fr",
                "de",
                "it",
                "pt",
                "zh",
                "ja",
                "ko",
                "ar",
                "hi"
            ],
            "timezone_detection": true,
            "auto_translate": true,
            "translation_provider": "google"
        }
    }
}
 

Request      

GET api/i18n/configuration

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get frontend configuration

deprecated:This controller has been refactored into smaller, focused controllers: - CurrencyController - currency methods (getCurrencies, getCurrency, convertCurrency, getExchangeRate, updateExchangeRates, getCurrenciesForRegion, getCurrenciesForPaymentMethod) - LocalizationController - language/locale methods (getLanguages, getLanguage, setLocale, getCurrentLocale, detectLanguage, getLanguagesForRegion) - RegionalPricingController - regional pricing methods (getRegionalPricing, applyRegionalPricing, getAllRegionalPricing) This controller is kept for backward compatibility but should not be used for new code. All methods have been moved to the appropriate specialized controllers. Only configuration methods (getConfiguration, getFrontendConfig) remain here.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/frontend-config" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/frontend-config"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-b98a24328825b00016bba3c234627216-4a4233fe4763cf27-01
x-trace-id: b98a24328825b00016bba3c234627216
x-span-id: 4a4233fe4763cf27
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 24d68a4c-bb71-4a1a-8068-190e2b0f67e8
 

{
    "success": false,
    "message": "Failed to get frontend configuration",
    "errors": {
        "error": "SQLSTATE[HY000]: General error: 1 no such table: regional_pricings (Connection: sqlite, Database: /Users/antonkara/Work/forgefile/database/database.sqlite, SQL: select * from \"regional_pricings\" where \"is_enabled\" = 1 and (\"effective_from\" is null or \"effective_from\" <= 2026-09-04 04:28:26) and (\"effective_until\" is null or \"effective_until\" >= 2026-09-04 04:28:26) order by \"region\" asc)"
    }
}
 

Request      

GET api/i18n/frontend-config

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get currency by code

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/currencies/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/currencies/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-79e6bb4ad4ce9b7b36672c218325edc9-eb8d8fc30e46b0f4-01
x-trace-id: 79e6bb4ad4ce9b7b36672c218325edc9
x-span-id: eb8d8fc30e46b0f4
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a08f4d94-95a2-40b7-b3f8-eadef29308c8
 

{
    "success": false,
    "message": "Currency not found"
}
 

Request      

GET api/i18n/currencies/{code}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

code   string     

Example: architecto

Get currencies for region

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/currencies/region/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/currencies/region/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-b6a2682479610c2386f22979f29e602a-f274280604e624de-01
x-trace-id: b6a2682479610c2386f22979f29e602a
x-span-id: f274280604e624de
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 13544a87-bf98-484c-8e6c-0e2713d41e64
 

{
    "success": true,
    "message": "Currencies for region retrieved successfully",
    "data": []
}
 

Request      

GET api/i18n/currencies/region/{region}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

region   string     

The region. Example: architecto

Get currencies for payment method

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/currencies/payment-method/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/currencies/payment-method/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-aa018eb13c03769a7ace8daffb3f8b42-4d1191e41b0f4809-01
x-trace-id: aa018eb13c03769a7ace8daffb3f8b42
x-span-id: 4d1191e41b0f4809
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 676769a2-ae67-40ba-94c0-f618bc825de3
 

{
    "success": true,
    "message": "Currencies for payment method retrieved successfully",
    "data": []
}
 

Request      

GET api/i18n/currencies/payment-method/{paymentMethod}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

paymentMethod   string     

Example: architecto

Get language by code

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/languages/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/languages/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-6bb157beb985265936852766e2dba8ee-def6c7ea562de920-01
x-trace-id: 6bb157beb985265936852766e2dba8ee
x-span-id: def6c7ea562de920
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7884c81a-7352-4441-97c8-24498f491d2f
 

{
    "success": false,
    "message": "Language not found"
}
 

Request      

GET api/i18n/languages/{code}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

code   string     

Example: architecto

Get languages for region

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/languages/region/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/languages/region/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-225d39f16731fe2fa058cda43b6a9132-c7a956dfc3226f1c-01
x-trace-id: 225d39f16731fe2fa058cda43b6a9132
x-span-id: c7a956dfc3226f1c
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ca9ebc10-4189-48cb-b923-9fd1e04c8f8a
 

{
    "success": true,
    "message": "Languages for region retrieved successfully",
    "data": []
}
 

Request      

GET api/i18n/languages/region/{region}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

region   string     

The region. Example: architecto

Get regional pricing for region

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/pricing/region/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/pricing/region/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-ba535199398e9ef51c76ea74255b1b38-b963537320866905-01
x-trace-id: ba535199398e9ef51c76ea74255b1b38
x-span-id: b963537320866905
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4d4fef79-c8e8-447a-b940-1a6f47ade789
 

{
    "success": false,
    "message": "Failed to get regional pricing",
    "errors": {
        "error": "SQLSTATE[HY000]: General error: 1 no such table: regional_pricings (Connection: sqlite, Database: /Users/antonkara/Work/forgefile/database/database.sqlite, SQL: select * from \"regional_pricings\" where \"region\" = architecto and \"is_enabled\" = 1 and (\"effective_from\" is null or \"effective_from\" <= 2026-09-04 04:28:26) and (\"effective_until\" is null or \"effective_until\" >= 2026-09-04 04:28:26) limit 1)"
    }
}
 

Request      

GET api/i18n/pricing/region/{region}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

region   string     

The region. Example: architecto

Get all regional pricing

Example request:
curl --request GET \
    --get "https://forgefile.com/api/i18n/pricing" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/pricing"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-066b663b9b5adb28bbb3b9bc257e726a-ef8f23a54f13a872-01
x-trace-id: 066b663b9b5adb28bbb3b9bc257e726a
x-span-id: ef8f23a54f13a872
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9def1d6d-77d7-4589-a11b-bc4d0b692e60
 

{
    "success": false,
    "message": "Failed to get regional pricing",
    "errors": {
        "error": "SQLSTATE[HY000]: General error: 1 no such table: regional_pricings (Connection: sqlite, Database: /Users/antonkara/Work/forgefile/database/database.sqlite, SQL: select * from \"regional_pricings\" where \"is_enabled\" = 1 and (\"effective_from\" is null or \"effective_from\" <= 2026-09-04 04:28:26) and (\"effective_until\" is null or \"effective_until\" >= 2026-09-04 04:28:26) order by \"region\" asc)"
    }
}
 

Request      

GET api/i18n/pricing

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Update all exchange rates

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/i18n/currencies/update-rates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/i18n/currencies/update-rates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/i18n/currencies/update-rates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get available bulk operation types.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/bulk-operations/types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/bulk-operations/types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4041a139-3b99-4423-a9f4-160a47b96c95
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.346799Z",
    "context": {
        "path": "/api/bulk-operations/types",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/bulk-operations/types

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's bulk operations.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/bulk-operations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/bulk-operations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 539eedb0-45c8-46a7-bfd6-109b65ee9264
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.349580Z",
    "context": {
        "path": "/api/bulk-operations",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/bulk-operations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get bulk operation status.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/bulk-operations/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/bulk-operations/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9a85c8ff-a557-4c3b-b0ff-542135643df0
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.409952Z",
    "context": {
        "path": "/api/bulk-operations/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/bulk-operations/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the bulk operation. Example: 564

Cancel a bulk operation.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/bulk-operations/564/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/bulk-operations/564/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/bulk-operations/{id}/cancel

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the bulk operation. Example: 564

Get bulk operation files.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/bulk-operations/564/files" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/bulk-operations/564/files"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 70960cab-6f3f-43b8-b4b4-cecf08a8711a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.417585Z",
    "context": {
        "path": "/api/bulk-operations/564/files",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/bulk-operations/{id}/files

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the bulk operation. Example: 564

GET api/translation/batch-projects/{uuid}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/translation/batch-projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/batch-projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ba9e8631-6b62-4e34-84c6-1004131317ff
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.461620Z",
    "context": {
        "path": "/api/translation/batch-projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/translation/batch-projects/{uuid}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

POST api/translation/batch-projects/{uuid}/unlock-password

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/translation/batch-projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed/unlock-password" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"|]|{+-\"
}"
const url = new URL(
    "https://forgefile.com/api/translation/batch-projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed/unlock-password"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "|]|{+-"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/translation/batch-projects/{uuid}/unlock-password

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

Body Parameters

password   string     

Example: |]|{+-

GET api/translation/batch-projects/{uuid}/download

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/translation/batch-projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed/download" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/batch-projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed/download"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8ff1c285-f7b4-468a-b425-5e92c3ab2a00
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.466633Z",
    "context": {
        "path": "/api/translation/batch-projects/6ff8f7f6-1eb3-3525-be4a-3932c805afed/download",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/translation/batch-projects/{uuid}/download

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

Get available tutorials for user

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ux/tutorials" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ux/tutorials"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9b86f085-5f05-406c-8cb5-9e893e550513
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.480763Z",
    "context": {
        "path": "/api/ux/tutorials",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ux/tutorials

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user tutorial progress

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ux/tutorials/progress" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ux/tutorials/progress"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 463edcf6-0065-4b24-a846-c78fb58be636
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.483795Z",
    "context": {
        "path": "/api/ux/tutorials/progress",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ux/tutorials/progress

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get specific tutorial

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ux/tutorials/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ux/tutorials/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: efbbbaf6-8de1-471e-8853-c2cc52b85b00
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.487167Z",
    "context": {
        "path": "/api/ux/tutorials/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ux/tutorials/{tutorialId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tutorialId   string     

Example: architecto

Start tutorial

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ux/tutorials/architecto/start" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ux/tutorials/architecto/start"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/ux/tutorials/{tutorialId}/start

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tutorialId   string     

Example: architecto

Complete tutorial

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ux/tutorials/architecto/complete" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ux/tutorials/architecto/complete"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/ux/tutorials/{tutorialId}/complete

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tutorialId   string     

Example: architecto

Skip tutorial

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ux/tutorials/architecto/skip" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ux/tutorials/architecto/skip"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/ux/tutorials/{tutorialId}/skip

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

tutorialId   string     

Example: architecto

Reset tutorial progress

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ux/tutorials/reset" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ux/tutorials/reset"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/ux/tutorials/reset

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get notification preferences

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ux/notifications/preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ux/notifications/preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 757d7fa6-3654-446f-a95a-7f3ece7f76fe
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.499263Z",
    "context": {
        "path": "/api/ux/notifications/preferences",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ux/notifications/preferences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update notification preferences

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/ux/notifications/preferences" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": false,
    \"push\": true,
    \"browser\": true,
    \"sound\": true,
    \"types\": [
        false
    ]
}"
const url = new URL(
    "https://forgefile.com/api/ux/notifications/preferences"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": false,
    "push": true,
    "browser": true,
    "sound": true,
    "types": [
        false
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/ux/notifications/preferences

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

email   boolean  optional    

Example: false

push   boolean  optional    

Example: true

browser   boolean  optional    

Example: true

sound   boolean  optional    

Example: true

types   boolean[]  optional    

Get UX analytics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ux/analytics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ux/analytics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d0e07b67-2616-4441-bce2-7e96ebda2148
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.509351Z",
    "context": {
        "path": "/api/ux/analytics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ux/analytics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get AI enhancement dashboard data

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ai-enhancement/dashboard" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ai-enhancement/dashboard"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e35e3852-17bd-4adc-bf5d-b07926c3471d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.530195Z",
    "context": {
        "path": "/api/ai-enhancement/dashboard",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ai-enhancement/dashboard

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get smart suggestions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ai-enhancement/suggestions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"context\": \"b\",
    \"content\": \"n\",
    \"file_id\": 16,
    \"type\": \"content\",
    \"limit\": 22
}"
const url = new URL(
    "https://forgefile.com/api/ai-enhancement/suggestions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "context": "b",
    "content": "n",
    "file_id": 16,
    "type": "content",
    "limit": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7aaf77cc-719a-4b4c-9073-a1e184111523
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.546255Z",
    "context": {
        "path": "/api/ai-enhancement/suggestions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ai-enhancement/suggestions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

context   string  optional    

Must not be greater than 100 characters. Example: b

content   string  optional    

Must not be greater than 10000 characters. Example: n

file_id   integer  optional    

The id of an existing record in the files table. Example: 16

type   string  optional    

Example: content

Must be one of:
  • personalized
  • content
  • search
  • recommendations
limit   integer  optional    

Must be at least 1. Must not be greater than 50. Example: 22

Get AI service status

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ai-enhancement/service-status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ai-enhancement/service-status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 97613770-3700-4459-b6d0-7d5fafafc436
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.559011Z",
    "context": {
        "path": "/api/ai-enhancement/service-status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ai-enhancement/service-status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get AI usage analytics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ai-enhancement/usage-analytics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"period\": \"year\",
    \"service\": \"translation\"
}"
const url = new URL(
    "https://forgefile.com/api/ai-enhancement/usage-analytics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "period": "year",
    "service": "translation"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 83a4dc0a-2d2e-40f6-ac06-4c526c9e434b
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.562801Z",
    "context": {
        "path": "/api/ai-enhancement/usage-analytics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ai-enhancement/usage-analytics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

period   string  optional    

Example: year

Must be one of:
  • day
  • week
  • month
  • year
service   string  optional    

Example: translation

Must be one of:
  • all
  • summarization
  • rewrite
  • translation
  • transcription

Test AI service connectivity

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai-enhancement/test-connectivity" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"service\": \"summarization\",
    \"provider\": \"gemini\"
}"
const url = new URL(
    "https://forgefile.com/api/ai-enhancement/test-connectivity"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "service": "summarization",
    "provider": "gemini"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai-enhancement/test-connectivity

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

service   string     

Example: summarization

Must be one of:
  • summarization
  • rewrite
  • translation
  • transcription
provider   string  optional    

Example: gemini

Must be one of:
  • openai
  • gemini

Get supported languages for free translation

Example request:
curl --request GET \
    --get "https://forgefile.com/api/free-translation/languages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/free-translation/languages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-ee64d7313854d2c8e87a26dd70eb8077-afb1d57e0301a83e-01
x-trace-id: ee64d7313854d2c8e87a26dd70eb8077
x-span-id: afb1d57e0301a83e
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4622aba5-fc2b-461f-8435-ed9191cc5466
 

{
    "success": true,
    "message": "Supported languages retrieved successfully",
    "data": {
        "languages": {
            "en": "English",
            "es": "Spanish",
            "fr": "French",
            "de": "German",
            "it": "Italian",
            "pt": "Portuguese",
            "ru": "Russian",
            "ja": "Japanese",
            "ko": "Korean",
            "zh": "Chinese",
            "ar": "Arabic",
            "hi": "Hindi",
            "th": "Thai",
            "vi": "Vietnamese",
            "tr": "Turkish",
            "pl": "Polish",
            "nl": "Dutch",
            "sv": "Swedish",
            "da": "Danish",
            "no": "Norwegian",
            "fi": "Finnish",
            "cs": "Czech",
            "hu": "Hungarian",
            "ro": "Romanian",
            "bg": "Bulgarian",
            "hr": "Croatian",
            "sk": "Slovak",
            "sl": "Slovenian",
            "et": "Estonian",
            "lv": "Latvian",
            "lt": "Lithuanian",
            "uk": "Ukrainian",
            "be": "Belarusian",
            "mk": "Macedonian",
            "sq": "Albanian",
            "sr": "Serbian",
            "bs": "Bosnian",
            "mt": "Maltese",
            "is": "Icelandic",
            "ga": "Irish",
            "cy": "Welsh",
            "eu": "Basque",
            "ca": "Catalan",
            "gl": "Galician"
        },
        "provider": "google",
        "total_languages": 44
    }
}
 

Request      

GET api/free-translation/languages

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Check free translation service status

Example request:
curl --request GET \
    --get "https://forgefile.com/api/free-translation/status" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/free-translation/status"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-84bc6f5bbd8416454912fde74ce5ab45-882d6cb421b5f06b-01
x-trace-id: 84bc6f5bbd8416454912fde74ce5ab45
x-span-id: 882d6cb421b5f06b
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 6375692b-7980-4c2c-b04c-91b83f7cc019
 

{
    "success": true,
    "message": "Service status retrieved successfully",
    "data": {
        "provider": "google",
        "available": true,
        "status": "online",
        "cost": 0,
        "supports_documents": true,
        "supports_text": true
    }
}
 

Request      

GET api/free-translation/status

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get available free providers

Example request:
curl --request GET \
    --get "https://forgefile.com/api/free-translation/providers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/free-translation/providers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-a6b4b7839cb34683a053ce495cd8cfef-e0c07a8ef5f742d1-01
x-trace-id: a6b4b7839cb34683a053ce495cd8cfef
x-span-id: e0c07a8ef5f742d1
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8dbe6b72-19d4-4034-aa0a-b42d030cf57e
 

{
    "success": true,
    "message": "Available providers retrieved successfully",
    "data": {
        "providers": {
            "google": {
                "name": "Google Translate (Free)",
                "description": "Google Translate free API - no API key required",
                "languages": 100,
                "quality": "high",
                "speed": "fast",
                "cost": 0,
                "supports_documents": true,
                "supports_text": true
            },
            "libretranslate": {
                "name": "LibreTranslate",
                "description": "Open source translation service",
                "languages": 50,
                "quality": "medium",
                "speed": "medium",
                "cost": 0,
                "supports_documents": true,
                "supports_text": true
            },
            "mymemory": {
                "name": "MyMemory",
                "description": "Free translation service with community contributions",
                "languages": 50,
                "quality": "medium",
                "speed": "fast",
                "cost": 0,
                "supports_documents": true,
                "supports_text": true
            },
            "microsoft": {
                "name": "Microsoft Translator (Free)",
                "description": "Microsoft Translator free tier - requires API key",
                "languages": 50,
                "quality": "high",
                "speed": "fast",
                "cost": 0,
                "supports_documents": true,
                "supports_text": true,
                "requires_api_key": true
            }
        },
        "total_providers": 4,
        "default_provider": "google"
    }
}
 

Request      

GET api/free-translation/providers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Detect language from text or file.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/free-translation/detect-language" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/free-translation/detect-language"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/free-translation/detect-language

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Analyze file for translation (word count, language, estimated time).

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/free-translation/analyze-file" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/free-translation/analyze-file"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/free-translation/analyze-file

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get provider usage and rate limits.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/free-translation/provider-usage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/free-translation/provider-usage"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a373c9cc-7953-4042-ab31-a790d6d56146
set-cookie: forgefile_session=eyJpdiI6ImNmZDBTYmlLNzVML0svQzQ2N3RuK3c9PSIsInZhbHVlIjoieDNzcmd6NTIydnN5dGpxdUYxYXhYbTArY2R0TCsxQWVzSnlGRWwwcm5ZUFlMN0NQbWVXdFNjMHg2bjQ5eUhyeGUvMlJ4Q1BCR3NIRXJOS0ZUbDc1WStHWjBYVmJySTlvWHlmemJpVU5KZFYyV0Vkd2lqS3krOGliL20wYVVVcDIiLCJtYWMiOiIyMTNkMmEzMTQyMmE4YTZlNzljN2E0NjJlNThiN2E4ODE3MmQ5Y2E5YWJkYTUxM2FmMmI5NWI3MjZiNjZiYWVkIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:26 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6InRZOFV0VXVYTE5NTDBwSnczTVRaZlE9PSIsInZhbHVlIjoiRlV5c1JpakJPWW91Q2xlQ21sK2NmT25BZmp1VlVOeGxzTnBuTXIzdlhNSkdmSWZ6N3pMaWZ4ZmdPSlVua2Z6WiIsIm1hYyI6ImY0NDAwOTMzZWMyNWNhYjllOWJmNTRjZjcyZDVhYWI4YjQ0ZGI4NzUwNzM1NTUwZmY5M2I5YjM3ZDNmZDNlOTEiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535999; path=/; samesite=lax; guest_token=eyJpdiI6IlBNZHgreFNBM3VNb3Z0a3d2Y25wRXc9PSIsInZhbHVlIjoiK2ZiWjl5NXFiREpobEVRcHpreE40VDlDOGcwZ3JXUXFZSFljRDlwaGhQaFNmK29PS0c0ZzZsRHhEb054RTNxSDBrRUNYaHN3bEhsc2s1V1NIWmJ2QWdNZkMyYTFVYmkvYStSTEc4RUVGNDA9IiwibWFjIjoiYmZhNjkyZjE4NmQxNTNjNjY4NGRlYTI5ZGNkY2Q5ZGNlNzU1NTYwOTkwODRlNDA1ZDZhYTZhOTJhYjE5MGExOCIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591997; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.654689Z",
    "context": {
        "path": "/api/free-translation/provider-usage",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/free-translation/provider-usage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get user's glossary terms.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/free-translation/glossary" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/free-translation/glossary"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8f704ab9-8393-4efa-9ee2-88a540719c90
set-cookie: forgefile_session=eyJpdiI6Ik9KT01IV3hwNVFVNVR4YTJvME9qUFE9PSIsInZhbHVlIjoiSkZZZUFVdUFJUXR5d1ZsdlB1dnVrK0FTS3JCemhUZmM3ajF0UklMcWl2amU5UE9UTiszZUp4VUd2VkVVY3JkSTNjOGxhbHpVaGY2YmhwcWpHMHhNZ2xNNThsSmRwODZENFlvVUdaa1F6bmowWTB5d3R6ajBJSE5PVVNzRitCTUkiLCJtYWMiOiJkMzhmNzNiOGFkYWYzYWRiNjllZmRiNTMzODEwMDM2MTZhNDk1MmExODU0MDVkZWY1N2UwZGQxMzBjNDlhNzg5IiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:26 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6Im9yNm1FQll3TVZmekZuZnpyM3JLSWc9PSIsInZhbHVlIjoiRXUzVDhtcnNLSnNwTHdJWncxUVpLNUVNNzlpaUZiTjFOdG9teVFOMlRLREJSdjVxOFNpbUk5Q1hmTGdhWWhmQSIsIm1hYyI6IjZkMjFiNGU1ZTg3YTY3ZmRhM2U4ZDk1YTliNGY3YWMxMmRkYWQyODc1MDFmZDMzMGYxMGQ4NjlhZDBkMGI1YTQiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535999; path=/; samesite=lax; guest_token=eyJpdiI6InJZYm8yWDc0bkNpb0VzOHBlZDRRSUE9PSIsInZhbHVlIjoiTEhFdm9pQjFZWi9LMjlHUTlkZDdHN3k0Ym9XdFhVUDlka2pzdWJPemxkV0RxVFd1MjIzTWFZUlB6UGIrdW13VmJxdkx0Q0JkOHB3L1B1K0lkT2M1aVQwNkJVU2t6Qk5WTGVRaWYvc0QwWUk9IiwibWFjIjoiOGIyOGFjMjYxNTQzYzAwN2FmZDBmY2E5Njk1ZjNiZDkzYWQ1NzRjYTc1MTM4NWEzNzE1NGNmYmFjOTYzY2RhNyIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591997; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.658764Z",
    "context": {
        "path": "/api/free-translation/glossary",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/free-translation/glossary

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Add term to user's glossary.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/free-translation/glossary" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"source_term\": \"b\",
    \"target_term\": \"n\",
    \"source_lang\": \"gzmiyv\",
    \"target_lang\": \"dljnik\",
    \"profile_id\": 16
}"
const url = new URL(
    "https://forgefile.com/api/free-translation/glossary"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "source_term": "b",
    "target_term": "n",
    "source_lang": "gzmiyv",
    "target_lang": "dljnik",
    "profile_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/free-translation/glossary

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

source_term   string     

Must not be greater than 500 characters. Example: b

target_term   string     

Must not be greater than 500 characters. Example: n

source_lang   string     

Must not be greater than 10 characters. Example: gzmiyv

target_lang   string     

Must not be greater than 10 characters. Example: dljnik

profile_id   integer  optional    

Example: 16

Delete term from user's glossary.

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/free-translation/glossary/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/free-translation/glossary/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/free-translation/glossary/{termId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

termId   string     

Example: architecto

Import glossary from CSV.

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/free-translation/glossary/import" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"csv\": \"architecto\",
    \"source_lang\": \"ngzmiy\",
    \"target_lang\": \"vdljni\",
    \"profile_id\": 16
}"
const url = new URL(
    "https://forgefile.com/api/free-translation/glossary/import"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "csv": "architecto",
    "source_lang": "ngzmiy",
    "target_lang": "vdljni",
    "profile_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/free-translation/glossary/import

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

csv   string     

Example: architecto

source_lang   string     

Must not be greater than 10 characters. Example: ngzmiy

target_lang   string     

Must not be greater than 10 characters. Example: vdljni

profile_id   integer  optional    

Example: 16

Export glossary to CSV.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/free-translation/glossary/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/free-translation/glossary/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b37216ac-90cf-437e-ba9b-69e5d6134c46
set-cookie: forgefile_session=eyJpdiI6Ilc1Qml4M2pJLzM0ZXBOd295K0NFaWc9PSIsInZhbHVlIjoiWmRXVXhXMzVHTnVEUEY2L3NFdG9ZNXV6aEU1Rnh2YnZReGwvanJrNVNDSyt1TXV2UlNwY0NQYmNRZjUxcmRPNHQ4SkUrZDh5aUhHSksvSmVRZW5EOE5CSHo2SDF4UCs3ZWdlN0V1eWpJc0hTbXhyeEQ5V09RVlIvRnNjRUlHNlkiLCJtYWMiOiIwMGIyNzdlOWFjMGJiZDE1YTdiZjViMzJmY2UwY2Q5YThjNzNkNDk5ZjU3NWE0MzIzNDEzNThiMDFkMWE0Yjg3IiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:26 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6Ik9aVU9ZVmw5VXBtVjBJR3N0VUFSTHc9PSIsInZhbHVlIjoiRGljWHJyKzQvd3QvL2twMlBlb0JkbkRQbmRMSk81ajdod2gyLzU3d3Ewcm01NnZTK3dEelFaZk8xYWQxWEw0SSIsIm1hYyI6IjhkZDkxYWZlYzZjNTQzMTRjNzdhNTUyOWQ3Zjc5ZmU5M2VhNmZjNGExNWE0ZWZlYTc1ZmViNmJkMTc5ZTQxNzYiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535999; path=/; samesite=lax; guest_token=eyJpdiI6IlNoNE1GTU9XYUk5MVRGVWdMdk5EUGc9PSIsInZhbHVlIjoicnVLLzhVUGpWWXFIUEU3b0x0SWQ1aGc4VzNKZ0FHSXNEaXhMNjRwbG0rY21pdUJsSE93SWlnaUt6cEpMVTZBdFJOc1Y4MWRVbmNjNFczTTdGdDNiMHVZN3F2ZG9kWGNWR1hWZTVPZUpKK1k9IiwibWFjIjoiMWFmMzdmN2EzZThiNjY1N2IyOWJhNjE5ZjZjMDhiYWE2NmM3OTU1NmFjNWNjNTVjMjUwYTU4YTMyNDc5Y2ZhNyIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591997; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.676854Z",
    "context": {
        "path": "/api/free-translation/glossary/export",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/free-translation/glossary/export

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET /api/translation/{fileId}/review

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/translation/architecto/review" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/review"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: bf694b1e-2d61-4f72-acc2-8e3f984c1736
set-cookie: forgefile_session=eyJpdiI6Ik05bkMxY0Vwd0ZXRHgxSWxsRDlocUE9PSIsInZhbHVlIjoiOXoxV1ZFbnY1TjdVcklCNi9TOEVLa1JXaEFDL2xUT3d1SWZnbXFEVTZtRm41N3VCYVhvcGxpMDVtVUlENWp0c0RnaXZtaytjNXlBQ3dwaC8vRDJMbWN1eE1Ha0VlTXUybXNjQTc2NmRzek5RQ1RYWXJIUzJQMHl0aEYxZjQ4eWMiLCJtYWMiOiIzMmNmMWJkZWQyMTY4MWM5MzE3NDA3YmMyN2YxYjNkNmE5ZmUwZDZiZTQyZTA0Zjg2N2RjOTJhNGM4YzY4OTUxIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:26 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6IlhjTE05dkFmTmw0TkhPeXJzRTRLRHc9PSIsInZhbHVlIjoiQXkrYU1iR3drZXpvRFp3MEFKS0dxc2pHa1FFeUhEV3lYRElubTlBMXN0TW8wWEJZa1pXRWhpU1o5em1LWEZBMiIsIm1hYyI6ImYyYTRiNTViZjQyNjYwMDJmMzg5ZGRmNTBhYTQ4ZmViZjY1YTU0NGQ2N2ViMGYyNTZiZWI3NjcyYmEwN2Y3NjAiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535999; path=/; samesite=lax; guest_token=eyJpdiI6IlJRa0JadUUyejJESUUySE95dTM1Q3c9PSIsInZhbHVlIjoiU2dyaGpXOUtITGRaT2JhaVgvajVkZlRjZjJVTVNnczNXeit5TCs1eUlURW00UXFWNzRLM3FiVExrNFo2OW4wMGd5UjZTWjFJRkJyZWN2NGxHczJQQmlwZWRETytxZDZpL2dJWEVtZXBvUzg9IiwibWFjIjoiZGI0MzAxMDYyZmY3NzQ5NzBmZDEwOGNlNDUxMGM0ZmQxNGZhOGU1MzA0Y2I5MDdmODAxZTE2Y2Q0MzRkZThjNSIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591997; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.682080Z",
    "context": {
        "path": "/api/translation/architecto/review",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/translation/{fileId}/review

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

GET /api/translation/{fileId}/segments

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/translation/architecto/segments" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/segments"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 46168ae0-65ef-466d-88c0-483aa825b424
set-cookie: forgefile_session=eyJpdiI6IlM4cERoYzVsdWtLMGhPdytCMlpxU3c9PSIsInZhbHVlIjoic1BhdnYvZll3MU90SC9nZzljM3d0QU85eG84dDlZOE9INzBGWkdncW9ERG9aYXIrNHN4YVVaMmd3MTBqamNJWm0ycFpSSi8vT0paQ3htM0Irc09mdkhTckZuWWE1TVkvTjVYRjh6Sk4xNmpLTDVUL3FhbTRjeGFUSXVxU2NSc2IiLCJtYWMiOiI4MGZiYmMwNjM0MmE5ZTY2OWEyNzRmNzI5Y2M5YjQyZDE5N2VmMmZiNWYwZWRiOTIyMzlmNGY4NGVlZGExYTliIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:26 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6IjJCUVJPOTFac0twZyttTXpYVkQvb2c9PSIsInZhbHVlIjoieFNkdVV4ZjdNbCtiWEkwOTVFTEN4V1hUVU95b1lSUEF1NUhYczZ4UEoydEVDN2tXQjZCTFI1OHB1L3oxc2hSdiIsIm1hYyI6ImM0ZTMyZmY4ODAwOWZlYzZiZTkzMDM2MWVmYzU0MmYyYTYzZjZkOWM3NzNlYjU2NTZlOTFjNDZlZDMxNmM5NzIiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535999; path=/; samesite=lax; guest_token=eyJpdiI6InR1Q04xeUtISTFObVRRUkpPRlN1M0E9PSIsInZhbHVlIjoidkMvbkJIdlFscG1kdzE3OXdMN2oyUitnL0tyTUQ4c3JOSmY4M3dxelZnbGJIK2p5d2dJSFNmWURrajV5MndUejdkYmJrb0Y4Z1l1cU9kQnhEVGJrdXVFQS9RelV2a0thZ1c1QjB0NDZCcW89IiwibWFjIjoiYTlmMzAyNDQwYmJjM2IzZTQ3ZGE4YzY3OWI3NjVkOWU4OGJjZGNiYTQzMTI4YTgzZGY2MmRhZDJmZWI5NDQ1NyIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591997; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.685623Z",
    "context": {
        "path": "/api/translation/architecto/segments",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/translation/{fileId}/segments

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

POST /api/translation/{fileId}/segments/autosave

requires authentication

Q1.6: DB::transaction + version check + throttle — do NOT modify this logic. Throttle middleware remains on the route. Transaction + lock lives in the Handler.

Example request:
curl --request POST \
    "https://forgefile.com/api/translation/architecto/segments/autosave" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://forgefile.com/api/translation/architecto/segments/autosave"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/translation/{fileId}/segments/autosave

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

Body Parameters

edits   string  optional    
segment_id   integer     

Example: 16

edited_text   string     

Must not be greater than 5000 characters. Example: n

version   integer  optional    

Must be at least 1. Example: 67

POST /api/translation/{fileId}/segments/submit-review

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/translation/architecto/segments/submit-review" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/segments/submit-review"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/translation/{fileId}/segments/submit-review

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

POST /api/translation/{fileId}/segments/{segmentId}/review

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/translation/architecto/segments/564/review" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"action\": \"reject\"
}"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/segments/564/review"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "action": "reject"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/translation/{fileId}/segments/{segmentId}/review

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

segmentId   string     

Example: 564

Body Parameters

action   string     

Example: reject

Must be one of:
  • approve
  • reject

GET /api/translation/{fileId}/review-summary

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/translation/architecto/review-summary" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/review-summary"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7a4a7471-172b-4f0f-b5f1-74e444805f1a
set-cookie: forgefile_session=eyJpdiI6ImNyRGpxNVlGMmZGQW5XNE5zUTU1R2c9PSIsInZhbHVlIjoiQWovc1hlSDlLY3p6NDZicHd3eVdWa0dkUnpwQU5yZFJjeUxxMnpFc1pXV0x3NUpJeXVrY0F6WjJKV1ZPWkZwM0lTNkhRdEhGUzE0NWhncWxtaGh3SHN1eTJBeThiYmo3bzhydDRoLzRsRG96QWljaGxub2tBM3dhSXN2N3BRRW8iLCJtYWMiOiI5MmNlMTM2NjE0YTZhMTQ2ZGE3MDBjMjNlYzgzNGRhMDI1Y2FjNWI5YmE5OTY5Y2ZiYjZhZTlkMmY4ZThlZDhmIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:26 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6ImRYSzBhb3Nxb1lWMzNYNXdtcGdqblE9PSIsInZhbHVlIjoiWkVTRmR1NXBqc3duY1h3U0xkTUYzTlhQNW81SGxLTnBmS2VheXFnVU5mdXFiRkpLcVRQZjBTSi9wa1JTZDNKbiIsIm1hYyI6IjI1YjcwOTMwM2MyZDMxZWI5NDhkNjk0MWI4NzlhMWRlZGFmZmYzZTJhMzNkMzljNjE1ZjIyODhmZTRmN2NiZTAiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535999; path=/; samesite=lax; guest_token=eyJpdiI6IlAxS2hEOEd4VjY5V1R1TGNsdFdxaVE9PSIsInZhbHVlIjoiUThYV0xFZCtLNGl1bHVFUFZTRUR3SjRYTjBlSGhoK1hFQU5kcHd2d2hENTdwbTMwRXoydmtSV3paV3ZBakRQR1RiZ3Jla1YwOCtNVE9TN0xzbFlOV3ozbXlReURVRi8xenZHenlqb2hGSVk9IiwibWFjIjoiNTVjZjU1MjkxMDMxMmZkNTk5NzVkYTkzMDAzYmUyMmE3ZjJlN2RjNTExNTQ0ODczYjQ5MDRhYzAwNzc1YmM5NyIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591997; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.691462Z",
    "context": {
        "path": "/api/translation/architecto/review-summary",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/translation/{fileId}/review-summary

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

GET /api/translation/{fileId}/segments/export

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/translation/architecto/segments/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/segments/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 54d57e6f-9b4a-4fc7-ad1e-d65199ec7ffb
set-cookie: forgefile_session=eyJpdiI6ImtZQmMzM1RTQnZxN0M1YTVWK2xoQmc9PSIsInZhbHVlIjoiTG9CY1BBamVmNEtmSkNEYnFrL1dKVjdmQW1kZUtUQVV0ZFFZVXlXU2t0ZnJkUjEyZWoveUxPZ043ZEorcmNwOVVUc1dVeExZRTRNNkl6WTBvU01PdEtyMXg5VkVMd01ON0NpaGF3dXNOU0NNWmthcSt4MkZqZTVPVmp4amhzNmciLCJtYWMiOiIwZjVjZTNmY2Q5YmU2OTc2ZWQwZWRhNTkwZDFhMDA0ZjlkNmJmMzIyMTA1ZWJjNDAyYTA5MzBiODk0ZDJhMjEzIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:26 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6IkhDeWR6b3BHbkdnVGt4QXhNcmFCM2c9PSIsInZhbHVlIjoiZUV1bGREWlpITmNna09FOU05Y1dGQ1R5SWwzdVJwMnRtV1N6R2NYQWx4UzJxUDB3ZGdweWZoTjFnanBGc0xrcCIsIm1hYyI6IjdlODEyZmI4NTA0ODhlN2U3ZmM0ZWMxMmZlYzY0Mzk1YmQ3ZTk0ZGRhODRkZDgxOTJkODY1NDk0OWViZjk4YWQiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535999; path=/; samesite=lax; guest_token=eyJpdiI6ImxtcG1ScGRQbi9qZmUvcUQ2ajFTSHc9PSIsInZhbHVlIjoiZEdzeVJiZ3JPM1NELy9FWWtXa1k5S2E5VjZreTNVTTF2TkNiQ3UrVlo4bDJWNzhsR243Y1JiZHRGNEJiTlpYdDNBY3o4Z09MZVVCdmRqZ21IbGhQWGRyTkQxTnFackxxNjBUQmNtU05HRUU9IiwibWFjIjoiNmM4M2U4ODlmOWU2YjkzNThhYjliYzFiMTU5Y2Y1N2UyNTEzYTcwYzUwNGI3NTEzOTU5MTdmZWZkZmUxZTdhMSIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591997; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.695644Z",
    "context": {
        "path": "/api/translation/architecto/segments/export",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/translation/{fileId}/segments/export

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

POST /api/translation/{fileId}/apply-edits

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/translation/architecto/apply-edits" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/apply-edits"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/translation/{fileId}/apply-edits

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

GET /api/translation/{fileId}/segments/{segmentId}/history

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/translation/architecto/segments/564/history" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/segments/564/history"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: eaf6a245-d052-449e-b565-98936353e4e4
set-cookie: forgefile_session=eyJpdiI6ImNQd2hRZ252ZEFUSnZZc041L3UvQlE9PSIsInZhbHVlIjoiVmlqbGcvVkJjZTdTUzVzRmlDNDlLK2IreVJiN1JPVFVBUFBDc2hZTWE0UllYRzlLVGk0R0VKWWxGUkUxQ3lPSlhBZTRteENDRzRDVEM3Yk43YWJTKzhSVjYzUVVZV2xDQ2g0NWtiZjFmVEZUaXRJd2JyWlpvTHNyaUxrSG90cGIiLCJtYWMiOiI0ZTk3NDYzMzQxYThlZThkNDM5NjEwMGU5MTZlMGZkN2QwMWI3NTY3NzNlMWQ0NDZkNTMzMWI0MjYxMjgzNThkIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:26 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6IlVnWE12NkpKK3M4aFZjNjJOQlZvc3c9PSIsInZhbHVlIjoiTWR2VDM0VjQ4RmI4TU5UODFtQXhuVXlLMWFJOVhXMTZQVlVadDlvUEgrTWd0S05aeTBoQUQwVlFCVFI3Z2lDZyIsIm1hYyI6IjE4ZjRkY2FjZmU4ODgyNGJmZjZmNjEwNTZhMmM4YmY0MGQ5N2U1YmY0NzJiMGM0NGJmMjFlY2MyYjQ4ZDFiNDYiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535999; path=/; samesite=lax; guest_token=eyJpdiI6ImlDdHJMUWtpaTA3NDlEWUNwSEt5aXc9PSIsInZhbHVlIjoibElHZWZuWWlXMlRhc0ZBMWhUdlFZWmlkSE5EY2YrVVJWZnJQd1NjNVAxc2VVNjF1Q1JCZkJ1VlZUU2lLdDUwelpneWhjMjJBdXpvekR0Tmc5cFZUNk5CRGZvaGJrV1p6bTNlOFlkREZMWk09IiwibWFjIjoiNDVjNWIwM2Q0OThmMmM0NTQyMDBkNzJhYjI4NWZlZmEwYTQ0MDFjZmZlMTk2M2QwMzhmOTRjNDAxOTk1MTBlOCIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591997; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.700461Z",
    "context": {
        "path": "/api/translation/architecto/segments/564/history",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/translation/{fileId}/segments/{segmentId}/history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

segmentId   string     

Example: 564

POST /api/translation/{file:id}/segments/{translationSegment}/approve

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/translation/architecto/segments/16/approve" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/segments/16/approve"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/translation/{file_id}/segments/{translationSegment_id}/approve

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

file_id   string     

The ID of the file. Example: architecto

translationSegment_id   integer     

The ID of the translationSegment. Example: 16

POST /api/translation/{file:id}/segments/approve-all

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/translation/architecto/segments/approve-all" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/segments/approve-all"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/translation/{file_id}/segments/approve-all

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

file_id   string     

The ID of the file. Example: architecto

POST /api/translation/{file:id}/segments/{translationSegment}/retranslate

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/translation/architecto/segments/16/retranslate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/translation/architecto/segments/16/retranslate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/translation/{file_id}/segments/{translationSegment_id}/retranslate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

file_id   string     

The ID of the file. Example: architecto

translationSegment_id   integer     

The ID of the translationSegment. Example: 16

Get supported file types for translation

Example request:
curl --request GET \
    --get "https://forgefile.com/api/file-translation/supported-types" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/file-translation/supported-types"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-db748037fb894652867984b3f0103bd3-3892ac04b4ed5ddf-01
x-trace-id: db748037fb894652867984b3f0103bd3
x-span-id: 3892ac04b4ed5ddf
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e97b3551-64c7-4fc1-ba8d-49d3adde458f
 

{
    "success": true,
    "message": "Success",
    "data": {
        "supported_types": {
            "application/pdf": "PDF Document (.pdf)",
            "application/msword": "Word Document (.doc)",
            "application/vnd.openxmlformats-officedocument.wordprocessingml.document": "Word Document (.docx)",
            "application/vnd.ms-excel": "Excel Spreadsheet (.xls)",
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": "Excel Spreadsheet (.xlsx)",
            "application/vnd.ms-powerpoint": "PowerPoint Presentation (.ppt)",
            "application/vnd.openxmlformats-officedocument.presentationml.presentation": "PowerPoint Presentation (.pptx)",
            "application/vnd.oasis.opendocument.text": "application/vnd.oasis.opendocument.text",
            "application/vnd.oasis.opendocument.spreadsheet": "application/vnd.oasis.opendocument.spreadsheet",
            "application/vnd.oasis.opendocument.presentation": "application/vnd.oasis.opendocument.presentation",
            "application/msexcel": "application/msexcel",
            "application/x-msexcel": "application/x-msexcel",
            "application/x-ms-excel": "application/x-ms-excel",
            "application/x-excel": "application/x-excel",
            "application/x-dos_ms_excel": "application/x-dos_ms_excel",
            "application/xls": "application/xls",
            "application/x-xls": "application/x-xls",
            "application/mspowerpoint": "application/mspowerpoint",
            "application/ms-powerpoint": "application/ms-powerpoint",
            "application/powerpoint": "application/powerpoint",
            "application/x-mspowerpoint": "application/x-mspowerpoint",
            "text/plain": "Text File (.txt)",
            "text/csv": "CSV File (.csv)",
            "text/x-csv": "text/x-csv",
            "text/tab-separated-values": "text/tab-separated-values",
            "text/html": "HTML File (.html)",
            "application/xhtml+xml": "application/xhtml+xml",
            "text/xml": "text/xml",
            "application/rss+xml": "application/rss+xml",
            "application/atom+xml": "application/atom+xml",
            "application/xslt+xml": "application/xslt+xml",
            "text/yaml": "text/yaml",
            "text/x-yaml": "text/x-yaml",
            "application/yaml": "application/yaml",
            "application/x-yaml": "application/x-yaml",
            "text/markdown": "text/markdown",
            "application/json": "application/json",
            "application/x-ndjson": "application/x-ndjson",
            "application/jsonl": "application/jsonl",
            "application/jsonlines": "application/jsonlines",
            "application/x-jsonlines": "application/x-jsonlines",
            "application/xml": "application/xml",
            "application/rtf": "application/rtf",
            "text/mdx": "text/mdx",
            "application/x-genesis-32x-rom": "application/x-genesis-32x-rom",
            "text/x-rst": "text/x-rst",
            "text/prs.fallenstein.rst": "text/prs.fallenstein.rst",
            "image/svg+xml": "image/svg+xml",
            "text/microsoft-resx": "text/microsoft-resx",
            "application/x-resx": "application/x-resx",
            "application/resx": "application/resx",
            "text/x-tex": "text/x-tex",
            "application/x-tex": "application/x-tex",
            "application/x-latex": "application/x-latex",
            "text/x-gettext-translation": "text/x-gettext-translation",
            "application/x-gettext": "application/x-gettext",
            "application/xliff+xml": "application/xliff+xml",
            "application/x-xliff": "application/x-xliff",
            "text/x-java-properties": "text/x-java-properties",
            "application/x-plist": "application/x-plist",
            "text/x-fluent": "text/x-fluent",
            "application/typescript": "application/typescript",
            "application/x-linguist": "application/x-linguist",
            "text/vnd.qt.linguist": "text/vnd.qt.linguist",
            "text/vnd.trolltech.linguist": "text/vnd.trolltech.linguist",
            "application/x-tmx+xml": "application/x-tmx+xml",
            "application/x-tiled-tmx": "application/x-tiled-tmx",
            "application/epub+zip": "application/epub+zip",
            "application/zip": "application/zip",
            "application/vnd.amazon.ebook": "application/vnd.amazon.ebook",
            "application/vnd.amazon.mobi8-ebook": "application/vnd.amazon.mobi8-ebook",
            "application/x-mobipocket-ebook": "application/x-mobipocket-ebook",
            "application/x-mobi8-ebook": "application/x-mobi8-ebook",
            "application/x-subrip": "application/x-subrip",
            "application/x-srt": "application/x-srt",
            "text/vtt": "text/vtt",
            "text/x-ssa": "text/x-ssa",
            "application/x-ass": "application/x-ass",
            "image/vnd.dvb.subtitle": "image/vnd.dvb.subtitle",
            "image/svg": "image/svg",
            "image/jpeg": "image/jpeg",
            "image/png": "image/png",
            "image/gif": "image/gif",
            "image/bmp": "image/bmp",
            "image/x-bmp": "image/x-bmp",
            "image/x-ms-bmp": "image/x-ms-bmp",
            "image/tiff": "image/tiff",
            "image/tif": "image/tif",
            "image/webp": "image/webp",
            "image/heic": "image/heic",
            "image/heif": "image/heif",
            "image/x-heif": "image/x-heif",
            "image/x-heic": "image/x-heic",
            "image/x-icon": "image/x-icon",
            "image/vnd.microsoft.icon": "image/vnd.microsoft.icon",
            "image/ico": "image/ico",
            "application/ico": "application/ico"
        },
        "max_file_size": 10485760,
        "total_types": 97
    }
}
 

Request      

GET api/file-translation/supported-types

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/file-translation/providers

Example request:
curl --request GET \
    --get "https://forgefile.com/api/file-translation/providers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/file-translation/providers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-eec6bf763485fa4639c7a2cc176ba49f-79453d4a98c43712-01
x-trace-id: eec6bf763485fa4639c7a2cc176ba49f
x-span-id: 79453d4a98c43712
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496166
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: afccdb82-1806-464d-88ce-b6b62dc2655a
 

{
    "success": true,
    "message": "Available providers retrieved successfully",
    "data": {
        "providers": {
            "free": {
                "name": "Free",
                "priority": 0,
                "supports_documents": true,
                "supports_text": true,
                "max_file_size": 5242880,
                "quality": "medium",
                "speed": "fast",
                "language_count": 50,
                "cost_per_1k_chars": 0,
                "is_available": false
            },
            "google": {
                "name": "Google Translate",
                "priority": 1,
                "supports_documents": true,
                "supports_text": true,
                "max_file_size": 10485760,
                "quality": "high",
                "speed": "fast",
                "language_count": 100,
                "cost_per_1k_chars": 0.02,
                "is_available": true
            },
            "deepl": {
                "name": "DeepL",
                "priority": 2,
                "supports_documents": true,
                "supports_text": true,
                "max_file_size": 10485760,
                "quality": "very_high",
                "speed": "medium",
                "language_count": 30,
                "cost_per_1k_chars": 0.025,
                "is_available": true
            },
            "openai": {
                "name": "OpenAI",
                "priority": 3,
                "supports_documents": false,
                "supports_text": true,
                "max_file_size": 5242880,
                "quality": "high",
                "speed": "slow",
                "language_count": 50,
                "cost_per_1k_chars": 0.03,
                "is_available": false
            },
            "gemini": {
                "name": "Google Gemini",
                "priority": 4,
                "supports_documents": false,
                "supports_text": true,
                "max_file_size": 5242880,
                "quality": "high",
                "speed": "medium",
                "language_count": 50,
                "cost_per_1k_chars": 0.015,
                "is_available": false
            }
        },
        "default_provider": null,
        "total_providers": 5
    }
}
 

Request      

GET api/file-translation/providers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Upload and translate file

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/file-translation/upload-and-translate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/file-translation/upload-and-translate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/file-translation/upload-and-translate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get database dashboard

requires authentication

Served under the api middleware alongside two dozen JSON siblings, so it answers in JSON too. It used to render a Blade view that was never written, which made every call a 500 rather than a page.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/dashboard" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/dashboard"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 175f63bd-92d0-4850-a3b8-7202062edbfd
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.790122Z",
    "context": {
        "path": "/api/database/dashboard",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/dashboard

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get database performance analysis

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/performance" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/performance"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: bbda5f1a-2aeb-47c7-a445-b5aca128e15d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.792944Z",
    "context": {
        "path": "/api/database/performance",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/performance

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get database health score

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/health-score" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/health-score"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1dfff4c8-ae2d-479a-b0e0-8f04c846e25e
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.795897Z",
    "context": {
        "path": "/api/database/health-score",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/health-score

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get optimization recommendations

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/recommendations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/recommendations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a0ece2ba-3dc3-4968-82f6-2619f176cbf8
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.798588Z",
    "context": {
        "path": "/api/database/recommendations",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/recommendations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get detailed database metrics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/metrics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/metrics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b1927b02-804e-4809-b6a9-6e58ca9f0ed8
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.801191Z",
    "context": {
        "path": "/api/database/metrics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/metrics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get connection pool statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/connection-pool" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/connection-pool"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 44a83fef-49d5-4371-846e-0b33f9878f54
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.803864Z",
    "context": {
        "path": "/api/database/connection-pool",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/connection-pool

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get query optimization recommendations

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/query-optimization" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/query-optimization"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 39375987-0c40-4e37-a3aa-1c3309a83439
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.812203Z",
    "context": {
        "path": "/api/database/query-optimization",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/query-optimization

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Analyze specific query

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/database/analyze-query" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/analyze-query"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/database/analyze-query

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Tables the planner keeps reading end to end.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/missing-indexes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/missing-indexes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1c9d2de0-e0e9-47ef-a28b-6489328272e8
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.835712Z",
    "context": {
        "path": "/api/database/missing-indexes",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/missing-indexes

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Indexes that cost writes and return nothing.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/unused-indexes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/unused-indexes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b5dfce38-3c72-4c25-b78c-32e27c9237bf
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.894045Z",
    "context": {
        "path": "/api/database/unused-indexes",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/unused-indexes

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create optimized indexes

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/database/create-indexes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/create-indexes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/database/create-indexes

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Largest tables, including their indexes.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/table-sizes" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/table-sizes"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4e4a42da-b975-43ee-b5ba-6729d284e44c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:26.978171Z",
    "context": {
        "path": "/api/database/table-sizes",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/table-sizes

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Every index with how often it has been read.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/index-usage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/index-usage"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 081b4a43-50ef-4216-9a91-67df437b5cf9
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.020507Z",
    "context": {
        "path": "/api/database/index-usage",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/index-usage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Slowest statements by total time.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/slow-queries" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/slow-queries"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: fd1ea47b-bd0c-4211-bb71-52456302d732
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.143537Z",
    "context": {
        "path": "/api/database/slow-queries",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/database/slow-queries

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/database/health

Example request:
curl --request GET \
    --get "https://forgefile.com/api/database/health" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/database/health"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-67b4bfe3745902511fcac90943071b25-8c7da9dc599db988-01
x-trace-id: 67b4bfe3745902511fcac90943071b25
x-span-id: 8c7da9dc599db988
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496167
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 6f5e7181-f735-4444-b0df-153792f2fa93
 

{
    "status": "healthy",
    "timestamp": "2026-09-04T04:28:27.148575Z",
    "database": "sqlite",
    "connection": "sqlite"
}
 

Request      

GET api/database/health

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get export progress

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/progress/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/progress/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f311d3fd-27d6-4a2d-831a-1208b89db4f2
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.239218Z",
    "context": {
        "path": "/api/export/progress/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/export/progress/{exportId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

exportId   string     

Example: architecto

Download export file

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/download/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/download/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 723af207-3e72-4319-a608-c061ddb4998a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.242064Z",
    "context": {
        "path": "/api/export/download/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/export/download/{filename}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

filename   string     

Example: architecto

Get export history

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/history" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/history"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8451baff-70ba-4fff-aa01-fef4085d8f6f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.247393Z",
    "context": {
        "path": "/api/export/history",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/export/history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get export statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 4239606a-d792-4a75-bedd-09991f8fc752
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.251723Z",
    "context": {
        "path": "/api/export/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/export/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get export templates

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 34ec898d-e8e9-4c9f-a07c-b9fa182e96ac
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.260633Z",
    "context": {
        "path": "/api/export/templates",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/export/templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Use template for export

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/export/templates/architecto/use" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/templates/architecto/use"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/export/templates/{templateId}/use

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

templateId   string     

Example: architecto

Get export schedules

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/schedules" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/schedules"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 196b4c9b-e86d-4415-b932-eb598849f346
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.272037Z",
    "context": {
        "path": "/api/export/schedules",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/export/schedules

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Update schedule

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/export/schedules/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"schedule_type\": \"weekly\",
    \"is_active\": true
}"
const url = new URL(
    "https://forgefile.com/api/export/schedules/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "schedule_type": "weekly",
    "is_active": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/export/schedules/{scheduleId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

scheduleId   string     

Example: architecto

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

description   string  optional    

Must not be greater than 1000 characters. Example: Et animi quos velit et fugiat.

filters   object  optional    
options   object  optional    
schedule_type   string  optional    

Example: weekly

Must be one of:
  • daily
  • weekly
  • monthly
  • custom
schedule_config   object  optional    
is_active   boolean  optional    

Example: true

Delete schedule

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/export/schedules/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/schedules/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/export/schedules/{scheduleId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

scheduleId   string     

Example: architecto

Get available data types

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/data-types" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/data-types"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0fd92f6d-6bd9-410c-9c98-d9540736fdf5
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.286410Z",
    "context": {
        "path": "/api/export/data-types",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/export/data-types

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get available formats

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/formats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/formats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5e0a9c27-0b77-4c17-b43e-36df6a7414bd
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.290826Z",
    "context": {
        "path": "/api/export/formats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/export/formats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get export configuration

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/configuration" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/configuration"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a27dab72-28b2-48f8-bef5-0d33c89a5ee1
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.294438Z",
    "context": {
        "path": "/api/export/configuration",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/export/configuration

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Clean up expired exports

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/export/cleanup" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/cleanup"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/export/cleanup

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/export/health

Example request:
curl --request GET \
    --get "https://forgefile.com/api/export/health" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/export/health"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-4a54dff3903394247ceaf32ee697d069-2c55a01e30242012-01
x-trace-id: 4a54dff3903394247ceaf32ee697d069
x-span-id: 2c55a01e30242012
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496167
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 36b3bb8e-053c-47c2-a4e8-1b7b8746f001
 

{
    "status": "healthy",
    "timestamp": "2026-09-04T04:28:27.299926Z",
    "export_service": "operational"
}
 

Request      

GET api/export/health

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get summary statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/diagnostics/summary" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/diagnostics/summary"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a4646c1f-a41f-4f3c-80a1-a953f9e8b0be
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.414039Z",
    "context": {
        "path": "/api/diagnostics/summary",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/diagnostics/summary

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

What the queue is doing, alongside where the files in it have got to.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/diagnostics/queue-status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/diagnostics/queue-status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cfa88446-4800-4f12-b7fb-bff4108752c9
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.417446Z",
    "context": {
        "path": "/api/diagnostics/queue-status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/diagnostics/queue-status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get files list with filters

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/diagnostics/files" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/diagnostics/files"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8e36b724-592b-401b-ae23-db7c54bbe1a9
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.420493Z",
    "context": {
        "path": "/api/diagnostics/files",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/diagnostics/files

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get detailed diagnostics for a specific file

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/diagnostics/file/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/diagnostics/file/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: afcfa189-1e54-416f-b8ae-e3b990081b1a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.423547Z",
    "context": {
        "path": "/api/diagnostics/file/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/diagnostics/file/{fileId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

Reset file status

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/diagnostics/reset/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/diagnostics/reset/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/diagnostics/reset/{fileId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

Restart processing for a file

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/diagnostics/restart/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/diagnostics/restart/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/diagnostics/restart/{fileId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: architecto

Get all A/B tests

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: eac5ac14-0830-4bd0-b7eb-0b227490fa3e
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.451833Z",
    "context": {
        "path": "/api/v1/tests",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tests

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get specific A/B test

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tests/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 484b0397-e414-4aa3-b4c0-37779ba69fcf
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.462303Z",
    "context": {
        "path": "/api/v1/tests/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tests/{testId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Update A/B test

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/v1/tests/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Eius et animi quos velit et.\",
    \"start_date\": \"2026-09-04T04:28:27\",
    \"end_date\": \"2052-09-27\",
    \"primary_metric\": \"architecto\",
    \"min_sample_size\": 90,
    \"confidence_level\": 7
}"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Eius et animi quos velit et.",
    "start_date": "2026-09-04T04:28:27",
    "end_date": "2052-09-27",
    "primary_metric": "architecto",
    "min_sample_size": 90,
    "confidence_level": 7
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/tests/{testId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

description   string  optional    

Example: Eius et animi quos velit et.

start_date   string  optional    

Must be a valid date. Example: 2026-09-04T04:28:27

end_date   string  optional    

Must be a valid date. Must be a date after start_date. Example: 2052-09-27

traffic_allocation   object  optional    
primary_metric   string  optional    

Example: architecto

success_criteria   object  optional    
min_sample_size   integer  optional    

Must be at least 100. Example: 90

confidence_level   number  optional    

Must be at least 80. Must not be greater than 99.99. Example: 7

Start A/B test

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/tests/architecto/start" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto/start"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/tests/{testId}/start

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Pause A/B test

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/tests/architecto/pause" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto/pause"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/tests/{testId}/pause

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

End A/B test

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/tests/architecto/end" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto/end"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/tests/{testId}/end

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Get A/B test analytics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tests/architecto/analytics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto/analytics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9bc2ad3a-5f04-4366-80a0-c63c3b788cad
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.475271Z",
    "context": {
        "path": "/api/v1/tests/architecto/analytics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tests/{testId}/analytics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Get advanced statistical analysis for A/B test

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tests/architecto/advanced-analysis" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto/advanced-analysis"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 23869acc-7a3f-4f2f-bf9a-f85287b1ba21
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.477744Z",
    "context": {
        "path": "/api/v1/tests/architecto/advanced-analysis",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tests/{testId}/advanced-analysis

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Get test performance metrics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tests/architecto/performance-metrics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto/performance-metrics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8eb82389-e72d-47da-b1f9-5b76f25cadd3
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.480043Z",
    "context": {
        "path": "/api/v1/tests/architecto/performance-metrics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tests/{testId}/performance-metrics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Get test recommendations

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tests/architecto/recommendations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto/recommendations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d19104f8-7ba2-40b8-8755-432bd86c058d
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.482317Z",
    "context": {
        "path": "/api/v1/tests/architecto/recommendations",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tests/{testId}/recommendations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Optimize A/B test automatically

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/tests/architecto/optimize" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto/optimize"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/tests/{testId}/optimize

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Optimize all active tests

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/v1/tests/optimize-all" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/optimize-all"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/tests/optimize-all

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Export test data

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/tests/architecto/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/tests/architecto/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 122ea63d-00b8-41ed-8f1f-0a6f70a12b58
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.487985Z",
    "context": {
        "path": "/api/v1/tests/architecto/export",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/tests/{testId}/export

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

testId   string     

Example: architecto

Get user's A/B test assignments

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/user-tests" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/user-tests"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b5d4b8f8-89d4-4206-becd-dbd0f3b01c26
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.500449Z",
    "context": {
        "path": "/api/v1/user-tests",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/user-tests

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

GET api/transcription/status/{fileId}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/transcription/status/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/transcription/status/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b403fe3a-7994-4d8d-9dca-1431a4fb1d7a
set-cookie: forgefile_session=eyJpdiI6IlNXaisrMWJjenpnOEhNNlA1dllaUmc9PSIsInZhbHVlIjoiMCs4OEwyczUxNlNoVkh5Q1ROeml0ZTZYbVRQUHdUYkRmZUl1aXFVb0x3a2VVdTMrZ1ZuWTB0bndUalBtVWNUVHp6elk4eEhxckxFV0tRcDZCRTg3b3pUTVVXOUg5d2tsL0tXNzlDaFRXaGkvVFRLWjVIYzEwdGo5ZFB5KzRQS2MiLCJtYWMiOiI5MTk1MzY1MzQwNWM2ZTJmZmZhMWE4NDkyZWM0ZTIyOWM5NjBiYWZmNTA3YzEzZWRiMDQ1NGFiZmEyYjczOTRkIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:27 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6IllZTnRuTjVLQmwraXN1QjR1U2srOWc9PSIsInZhbHVlIjoiWEZMQzNjbUp3bnJsZDFKaVkzUFN1Q2ZYVG1wOXRxeDFmcFRwbkg2QmladUVBU2tsZnJacGMyeTQ2RXZ0dUJ6biIsIm1hYyI6ImRjMTNhMGUxNmQ2Njk4YzQzNWFkOWMyOGNhNmIxNzM0ZDVhYmM3Mjc2MzEwMWRiZTNlMjQzZDE4OWIyNTdmOTkiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535998; path=/; samesite=lax; guest_token=eyJpdiI6ImhESTB0YTJxV0hMdWZMTFBNY2xtdUE9PSIsInZhbHVlIjoiRkk1TG9WL3k1dDUramltK3hoVTZVNGlsZFBNc1dLTXFNWDhnRXJmbkx6ZzFocFl6Q0V2Zy8rMXpXS1pybWVWR0d1WmtOWi9hS2dYczdvTWpRb3o0Z2N1SXV5TStJV3drV3JpM1RUSFZBZmM9IiwibWFjIjoiMDg1YjQ4Yjk2Y2QwMWY5NTk1NDEyMjYzN2M2YTY0ZDExZjNiNjAwNjVlMTQ1MjFhYmJhN2NjMjRjNDljNTI0YyIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591996; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.509917Z",
    "context": {
        "path": "/api/transcription/status/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/transcription/status/{fileId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

GET api/transcription/job/{jobId}/status

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/transcription/job/architecto/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/transcription/job/architecto/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 52baa0f2-7053-4e67-8e5d-a22c2db60813
set-cookie: forgefile_session=eyJpdiI6InVRa1hZZm5Dcmh3WERhQVpzSmNjdkE9PSIsInZhbHVlIjoiZnNUUTZBTHJiWHh5V2swOVFBVFdEN1hSb2FmZU9hOGw0RnZ5SUF4eEFRMTRvczl6UUpKVE0rMWJIS1NKMWxqZnJOR2dWT2pTV2FaTFF6SENBZUNNWjVoTGVDYVVkRFZNU0Z5TSthODduY3AvdnRjQU1EUmxjMUZmU3ZqUWhoeUwiLCJtYWMiOiJiNjA2YWI5NTExNjljMmMwNGU4OGMyNzZiMmM0NjgyOWFlODQ2OGE1YTU0ZjNkYWFiOWNhNjg2MTQxNGZjMDQ4IiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:27 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6IlMxekd0RVdvZ3UxT01KRmVxMTB0eXc9PSIsInZhbHVlIjoiazhqZ3BtOEZGYk44N2daRFpiWlFaaENxTFZJSCtvSU4zVDZIQWdIUjd3NUtiUkx3TmxhdENvajhTdEQ3S21iTiIsIm1hYyI6IjAwODQ1OWU1ODY0ZTVhN2RjM2I0Y2ZiZTgzOGFlYjNiNGI0NjRiNDI5NGMwMjY5YjdhZWQ4MTA4MzIwZDFlNTYiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535998; path=/; samesite=lax; guest_token=eyJpdiI6ImUyNjdJZ2N4V1I1QmNlK3JNSWdXM1E9PSIsInZhbHVlIjoiZzFXc3p1WFFRc0tSSkZzdWZvWHc0emhLeFcrc1hBQTFyRWxiRW8yUDhjcWNQaERuQ0UxSDllWVFwSTMxZHdhMkoyVWNlZ2txb0k0b3pVZlBxRVpwR25ZNkdlbW9jTHNnYkxadHFTNXJkTnM9IiwibWFjIjoiZmYyYzQwMTcwYWJmZGE1YTY2ZGRiYzNlNDM1YzhiZDFhNWQxYzA4ZGUwYTE1MDQzZDIzMjA0YjQ1YTRiYjQ1YiIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591996; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.513927Z",
    "context": {
        "path": "/api/transcription/job/architecto/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/transcription/job/{jobId}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobId   string     

Example: architecto

GET api/transcription/job/{jobId}/result

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/transcription/job/architecto/result" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/transcription/job/architecto/result"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 420ca36e-af99-4b2f-8ed1-b715d2b82296
set-cookie: forgefile_session=eyJpdiI6IkZVcVJUR25rZHZnbDZJSWo1RGFIM0E9PSIsInZhbHVlIjoidCswVlJaZzRFQ2NSVWpuK0RKdGNaenFSOWZDQlIrQ0h4TEpDUE9OVi84b2gwWkczQUh4aUllb25leFVXWnJHRTV5WDFHZnNmbEVDeVQyTW92UTY2YUhZcndKamRzbWIyazZ2T25RR2I5MncxTk5lVUZVaFh4V28za3RaSzZZeEYiLCJtYWMiOiJmYTA3MDY1MjZjOTNkZDJhYzM1ZGJmOTY2NWVmNGM5MjE1OTg2MDYxMWVmOWUzN2NlZDZkYzE3MjIxNDRmMzAzIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:27 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6InJQNWlpcGhwSWxQOHdON29MRjBWc2c9PSIsInZhbHVlIjoiSEJnTHVnOVVRZy9jSkJJZUNBZUt4SlZoaGFNZlVkNFpMWU5Pd2Z6R2Z6QlpCVnBRbGNpdEsxN2dLVmJiUWREeCIsIm1hYyI6ImQ5N2JhYjA1ZjdmZDdlM2U4Mzg2N2E3ZDRhYWMzNTk2Mjc1MWExZWQ0ZDQ4MjMxNzQxNDQyNzVhNzZmZDBkNjUiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535998; path=/; samesite=lax; guest_token=eyJpdiI6IkxIelV1Yk90aVFZUG8ybEhlN0NLK0E9PSIsInZhbHVlIjoiZDZvbWxPT2dVaWp5QjJIZFc5MEJTQ2xXL1JRUk9kL2ZVNXR6Ym9oZ213U0VLMnIzMzBDT0gzQTF0bDk2QnZHNU1LZkhxQjVFQ2J3Q25YNm1nVldXLzR4VGp0K0xUejRRWGo4VWIxRDhQTFE9IiwibWFjIjoiYWNiYjQwOGJmYWFkZTQxYmM4OWMxZDNjZmY1ZDk4NTA2OGEwNDQ3YWEzMmM5ZmM1MjllMDJlYjk5MDFmOWUzZSIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591996; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.517313Z",
    "context": {
        "path": "/api/transcription/job/architecto/result",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/transcription/job/{jobId}/result

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobId   string     

Example: architecto

POST api/ocr/process-file/{fileId}

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ocr/process-file/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"language\": \"bngzmiyvdljnikhw\",
    \"provider\": \"google\",
    \"confidence_threshold\": 0,
    \"extract_tables\": false,
    \"extract_forms\": true
}"
const url = new URL(
    "https://forgefile.com/api/ocr/process-file/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "language": "bngzmiyvdljnikhw",
    "provider": "google",
    "confidence_threshold": 0,
    "extract_tables": false,
    "extract_forms": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ocr/process-file/{fileId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

fileId   string     

Example: 564

Body Parameters

language   string  optional    

Must not be greater than 20 characters. Example: bngzmiyvdljnikhw

provider   string  optional    

Example: google

Must be one of:
  • paddleocr
  • tesseract
  • google
  • azure
  • ocrspace
  • easyocr
  • mistral
confidence_threshold   number  optional    

Must be between 0 and 1. Example: 0

extract_tables   boolean  optional    

Example: false

extract_forms   boolean  optional    

Example: true

GET api/ocr/job/{jobId}/status

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ocr/job/564/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ocr/job/564/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 77a8a29c-c8cd-4ecc-b627-708fb6b6f66e
set-cookie: forgefile_session=eyJpdiI6IjcxYXpQNzJMbDIvSlp1Y1JEZWg1Znc9PSIsInZhbHVlIjoiSG5iWjJIYVBEL1UwSXdnYlFKaVV0UTFKeXd6OHpEM3FwRGVLbWhSTDB0b3NWV2lsOW5kQmNWczNxM1dvME5ZRndNV2dZc0lzRlRCSmhBS01WRGJkeHdSZC9SU0NWbU5YRG5xNEtJdjNHc0F4WlhSZmVHVFdkYTZnWXZjSGZYYmgiLCJtYWMiOiI1MGRhYzUwODg0MDRmNTY4NjYwMGRkNDRhN2ZlOGRmYWJlYTkyOGMyZGM5MTAxMzA5OTZkZmNlYmE3YjVkMmZkIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:27 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6IlFDcUthZVZHQnJxeC95VmxqOW9kMVE9PSIsInZhbHVlIjoiNnBPZlRFeDhYTy9nZ2hxQ1pKSVQvbGdORVVJWlBtSktQYjJmYjVydkRRVk9lS2NhU2x2Y0NjSm05VUJ1MmVpeCIsIm1hYyI6ImQxODIwZWY3MTVhZGIwZjlkNjYxMTRiMjg3OWVhMmUyNWExZGUwZTZlNTVjNjRmZmQ3NTM2YzJhNzYyZTFjZmUiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535998; path=/; samesite=lax; guest_token=eyJpdiI6ImNGMitmeUhZcEdsU0drWWdFajFTK1E9PSIsInZhbHVlIjoieU44eldxaDZZalhrblJlTnNnUDRIY2dIYWNNRFJ1Q21aZ0lyNGNOUjlnd1ZkdUdvLzF4Vi96WUtHaE1oMzBKMWRqb3k3bGpMaGNwVEhiWWk1WkNxamsrejZ2dXpIL1Q1YlA1czRZNkx4YlU9IiwibWFjIjoiZGM2M2VhM2EzZDg4NDNmZWRhZTExZDY2MDNiYmFlMGU0MjFmZDI2M2ExNTgwNzMyNDI2MDRiY2FhZTJhY2VhMyIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591996; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.537269Z",
    "context": {
        "path": "/api/ocr/job/564/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ocr/job/{jobId}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

jobId   string     

Example: 564

GET api/rewrite/files/{uuid}/progress

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/rewrite/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/progress" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/rewrite/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/progress"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cbf7f2c0-aec0-4aaf-90ee-81f8b5359209
set-cookie: forgefile_session=eyJpdiI6IlhCMmpHQnZ6QUd0SGZVSkh6N0g2eVE9PSIsInZhbHVlIjoic0I0bUd6UTRaK1JLRU8vRXYvTURPMmNHU1R5SnZ5STlwMzM1UGJOKzYyTzh0QUZ2OEo5SnkzM1hzUktCUHVZZ1ZJMWZLSmV0Y3VBcEdmSDNQRndYcVVKTHp2TFlzMVhxcEt5Ukw3QkxqZ3BXQnp3TXRreTZWSmY1N1dEZ3FPYmUiLCJtYWMiOiJjYTEzOWU3YmU1Njc3N2JkMzQyNWY4MzE3MTVlOThkNjY5ODJkNGY3NGI3MjVhZjYyM2VhNjQxZTlhZWJhMjdkIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:27 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6IjQzeFdhV2cwYTFtV2JHOWs3eURNSkE9PSIsInZhbHVlIjoia2h2WjVmbzdKZXZMUzFLNmlldW1zZkxjQXBGdTZ0aVVoakFrcDY5RXY1SXEyMmJZSlhsT0hRSXhsb2ZwL1phTSIsIm1hYyI6ImExM2ExODMyZGU1OGQ0M2NlOGY5YmI1ODhmMjYyY2IxZDBhMjUwNDQyYzFjMmE1OWIxNmQzZjBjMmM4YTJkYmYiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535998; path=/; samesite=lax; guest_token=eyJpdiI6IjY5RnBqZEZIbmdiaVBTc3paa3YzcGc9PSIsInZhbHVlIjoieGdIbE85bDcrUjVTR1BMb0dJY3Q4clNvREQxN1NYSWpldEZIZWVabmtsc3EvSE15dlkyeUdCME44bGovK3B1ays0Q0NTN3ZvNTBpOURkQ2FpQndkRDJkdkNzd2NySUovL0lGZVROZHVNMlk9IiwibWFjIjoiMTk3YTk2ZDk2MmE0N2MxNTc4NGZjNDMyNmE4NWVlMjQ1MTk3ZmI2OTFkYTA4Y2M2NjQ2OTE4NmYwMmE4ZGRjZSIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591996; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.545901Z",
    "context": {
        "path": "/api/rewrite/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/progress",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/rewrite/files/{uuid}/progress

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

GET api/summarization/files/{uuid}/progress

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/summarization/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/progress" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/summarization/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/progress"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3e71b7c3-c585-43f1-9651-bd8055605b0a
set-cookie: forgefile_session=eyJpdiI6IkErUldsK2NHZ0FLa0poeDdHY1NsVkE9PSIsInZhbHVlIjoiU25lc01PK1M1SDZYdVpKWmtFeW56enBPdVd2ZU9yUXBvVGJnOWZxVkRoYkN6cDFUeGYvUHFiWEhkQkk1SXJyaVlTREUxZmJUQnR2OTRxekIvdDhzY0ZDeHpRSDIwUjhLMkprK1o1S09uVExXdDcva1kycUtBb1B3NHBCMXErZXciLCJtYWMiOiIzMzRjYzE4M2E0MWI4ZTNkMTE4OWQzYjcyOGNiY2Q1YjVmM2Y2MDhmZDQzZDMzZTk2N2ZjZTgzNThkZWYyOWZhIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:27 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6InNESHVXRVVQc1dYekx6ZHQ5YjZPWXc9PSIsInZhbHVlIjoiOVRvQ1RGMEpaMGFEeXJ2Vm1aZUl1S0dydnl0c0Z6dXBoRUpKQXVSZGw0MXlVbDMyRlZzWHpFTWc4cmRBcTVaMiIsIm1hYyI6IjMzZjhjOGE2MWJlYmJhZjI4ZDkzYzhjZWNjNjQ4YjA1YzZkZmZmM2I2MTY2NzlmZDhkZTJjMmY1NGM5YTA0NjciLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535998; path=/; samesite=lax; guest_token=eyJpdiI6Ik4xTktLZW9JMndYanVFY0dUeE40NkE9PSIsInZhbHVlIjoidG9IaXd2UGREREEwNXJKN2d3Q0tvTHR0MHVlM1JxYjJwMW0yYktVc29zYWVVODN4V25oU1BaK1Y2MW00U1J2VmcyQjBaZ0l2RXNQL1R5NzR4c2xmQmFoL1F1USs1cE00THZ6aitqclVUZUE9IiwibWFjIjoiNzMyODVkOTc1NGYxMTdkZWU0ZDMyYWM1ZGJiZGU2ZjVmMjkxMGFjNTAxMDQzM2E4MWFhOTZlZjllNWUwN2VlYiIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591996; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.551597Z",
    "context": {
        "path": "/api/summarization/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/progress",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/summarization/files/{uuid}/progress

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

GET api/v1/summarize/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/summarize/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/summarize/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 68ccd242-57ea-4cca-9b99-32aff964c9b4
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.576919Z",
    "context": {
        "path": "/api/v1/summarize/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/summarize/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the summarize. Example: 564

GET api/v1/summarize/{id}/result

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/summarize/564/result" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/summarize/564/result"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f992b1b8-d872-46e3-81f0-9f19d4ffe69a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.580184Z",
    "context": {
        "path": "/api/v1/summarize/564/result",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/v1/summarize/{id}/result

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the summarize. Example: 564

Get conversion progress for a file.

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/conversion/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/progress" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/conversion/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/progress"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 61a7bff6-edbb-4073-996d-18972d87f179
set-cookie: forgefile_session=eyJpdiI6ImlSb25HVE16WVdpNXQ2b2xjN0o3SWc9PSIsInZhbHVlIjoiWHIxcFdiT1dqcWwvbDlic3R4MEZzZ3Z1MHdWTFVzMEZQTERVT01ySThLcFVPMnAwbitqZWI4Sy9pZzVVdUZUckZBMUdidnJ0WGZBSGU4U0tMYjZkVnBiS2NmbzUwK3F6bTBhMy9nWUxlYUdLR2drMlZtKzdBNENBR1VXeE13WW0iLCJtYWMiOiJlNGQxZDg1Y2UxZmY0MTE1MzE3NTNjYWU5Zjc4MWZmZDJjNDcxYWQxYjFlMDc0MGYxMDdjZGVlYzIxYTFjZjFiIiwidGFnIjoiIn0%3D; expires=Sat, 05 Sep 2026 04:28:27 GMT; Max-Age=86400; path=/; httponly; samesite=lax; forgefile_locale=eyJpdiI6IlQwTzdsOTRrU1Vqb0ZLSDlzbVJIWnc9PSIsInZhbHVlIjoicTJ4aFlHSEtKQnYxaHlUZ3Y1RUsyQ2haWTdUK3RlTDU3aHBYZlRlZXF4NTZLc3ZpcGg1YUFTZElHc1RFOWhBTSIsIm1hYyI6Ijk3YzJiOTlhM2IwYmM4NGE4NTM3ZTllNDQ5N2M1MmRhMTE1ZmI3MTJjZGNlMzEwNmQ1ODgxNjYzNGFhNDIxYjMiLCJ0YWciOiIifQ%3D%3D; expires=Sat, 04 Sep 2027 04:28:25 GMT; Max-Age=31535998; path=/; samesite=lax; guest_token=eyJpdiI6IklnVW9rZS9RQ3ZWenZCWkk0NElYMmc9PSIsInZhbHVlIjoiemEvRjN2TzlJS3NzNjM4RFhRUXFOaTRubG1mOEN5VEQxWkNZalZYQjlWb0V4MVcvTmh5b0tCc2xMZHFwRTdnTWJGV1FXMzNsQnFKYzZuRVRuWG5pazhac1BPKy9ZaldSbU56OVRGdlBDWU09IiwibWFjIjoiZDZjNWI2NDQzZjlmYTkwZDA4NTUwMmU0NTBmNzIwN2U1MzYyNTllMDNjOGY5ZmI4MTYxNjk0ZWEwNDNlYTVkYiIsInRhZyI6IiJ9; expires=Sun, 04 Oct 2026 04:28:23 GMT; Max-Age=2591996; path=/; httponly; samesite=lax
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.586221Z",
    "context": {
        "path": "/api/conversion/files/8fa195c53e-6380c7a1d1ed92bea40f297f9/progress",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/conversion/files/{uuid}/progress

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 8fa195c53e-6380c7a1d1ed92bea40f297f9

GET /api/v1/external/files/{uuid}

requires authentication

Returns the current status and metadata of a file.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/external/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/external/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-a5bdb0d248c44dae87667e33063a2075-b528e4ab01a20516-01
x-trace-id: a5bdb0d248c44dae87667e33063a2075
x-span-id: b528e4ab01a20516
x-sampled: true
x-ratelimit-limit: 20
x-ratelimit-remaining: 19
x-ratelimit-reset: 1788496167
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 87ea10d7-6b55-4342-98d7-157a0bf7b32d
 

{
    "error": "API token required",
    "message": "Please provide a valid API token in the X-API-Token header"
}
 

Request      

GET api/v1/external/files/{uuid}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

GET /api/v1/external/files/{uuid}/download

requires authentication

Stream the processed result file. Returns 422 if file is not yet completed.

Example request:
curl --request GET \
    --get "https://forgefile.com/api/v1/external/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed/download" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/v1/external/files/6ff8f7f6-1eb3-3525-be4a-3932c805afed/download"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-3424c7492a591d93800821b7ec6d02d4-cf8761b874e720e2-01
x-trace-id: 3424c7492a591d93800821b7ec6d02d4
x-span-id: cf8761b874e720e2
x-sampled: true
x-ratelimit-limit: 20
x-ratelimit-remaining: 19
x-ratelimit-reset: 1788496167
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c00aed0d-277a-4aab-9395-158e4c19f2b2
 

{
    "error": "API token required",
    "message": "Please provide a valid API token in the X-API-Token header"
}
 

Request      

GET api/v1/external/files/{uuid}/download

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

uuid   string     

Example: 6ff8f7f6-1eb3-3525-be4a-3932c805afed

Get list of workflows

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/workflows" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/workflows"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: fb0abf91-d095-4740-a5dd-7d4501883214
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.637193Z",
    "context": {
        "path": "/api/api/automation/workflows",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/workflows

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get workflow details

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/workflows/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/workflows/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5db96d72-4c3e-4a73-8a34-7bd972009b4f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.645756Z",
    "context": {
        "path": "/api/api/automation/workflows/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/workflows/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the workflow. Example: 564

Delete workflow

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/api/automation/workflows/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/workflows/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/api/automation/workflows/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the workflow. Example: 564

Get workflow executions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/workflows/architecto/executions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/workflows/architecto/executions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b677fa59-4be1-4679-9e7b-bc07666f2e5c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.658579Z",
    "context": {
        "path": "/api/api/automation/workflows/architecto/executions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/workflows/{workflow_id}/executions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow_id   string     

The ID of the workflow. Example: architecto

Validate workflow definition

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/automation/workflows/validate" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/workflows/validate"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/automation/workflows/validate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get workflow execution status

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/executions/architecto/status" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/executions/architecto/status"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0b69d802-3eaf-4871-a383-4b503ed0f56f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.664107Z",
    "context": {
        "path": "/api/api/automation/executions/architecto/status",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/executions/{executionId}/status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

executionId   string     

Example: architecto

Cancel workflow execution

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/automation/executions/architecto/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/executions/architecto/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/automation/executions/{executionId}/cancel

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

executionId   string     

Example: architecto

Get execution details

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/executions/architecto/details" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/executions/architecto/details"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2e65cc81-e083-4a8d-9b24-e0b0989a1b0c
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.668392Z",
    "context": {
        "path": "/api/api/automation/executions/architecto/details",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/executions/{executionId}/details

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

executionId   string     

Example: architecto

Get available workflow actions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/actions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/actions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8783440c-215d-473c-ba71-ec3175fb2e80
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.672414Z",
    "context": {
        "path": "/api/api/automation/actions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/actions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get workflow templates

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 84c8733d-3db3-4bd5-bb7e-feae62c2d6e7
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.675374Z",
    "context": {
        "path": "/api/api/automation/templates",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Import workflow from template

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/automation/import-template" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/import-template"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/automation/import-template

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get webhook documentation for a workflow

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/webhooks/workflows/architecto/docs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/webhooks/workflows/architecto/docs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 6e86d5ee-1b27-4335-883a-bb6142a7f654
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.698121Z",
    "context": {
        "path": "/api/api/automation/webhooks/workflows/architecto/docs",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/webhooks/workflows/{workflow}/docs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow   string     

The workflow. Example: architecto

Test webhook endpoint

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/automation/webhooks/workflows/architecto/test" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/webhooks/workflows/architecto/test"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/automation/webhooks/workflows/{workflow}/test

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow   string     

The workflow. Example: architecto

Get analytics dashboard data

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/analytics/dashboard" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/analytics/dashboard"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8704d45e-1eef-42f1-95d7-5812f47bc9df
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.713459Z",
    "context": {
        "path": "/api/api/automation/analytics/dashboard",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/analytics/dashboard

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get workflow statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/analytics/workflows/architecto/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/analytics/workflows/architecto/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: fbb5ad20-f2c3-4e01-828d-68fd7d014dd6
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.722306Z",
    "context": {
        "path": "/api/api/automation/analytics/workflows/architecto/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/analytics/workflows/{workflow}/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow   string     

The workflow. Example: architecto

Get workflow performance bottlenecks

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/analytics/workflows/architecto/bottlenecks" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/analytics/workflows/architecto/bottlenecks"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8338e182-22a7-4be7-b307-7a719d43f4ca
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.735773Z",
    "context": {
        "path": "/api/api/automation/analytics/workflows/architecto/bottlenecks",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/analytics/workflows/{workflow}/bottlenecks

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow   string     

The workflow. Example: architecto

Get workflow usage patterns

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/analytics/workflows/architecto/patterns" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/analytics/workflows/architecto/patterns"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8e2202ae-dc64-4b79-80c3-240dfb87d58f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.748231Z",
    "context": {
        "path": "/api/api/automation/analytics/workflows/architecto/patterns",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/analytics/workflows/{workflow}/patterns

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow   string     

The workflow. Example: architecto

Generate workflow insights

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/analytics/workflows/architecto/insights" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/analytics/workflows/architecto/insights"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 08107502-e17a-4e9d-b300-97b181637626
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.752623Z",
    "context": {
        "path": "/api/api/automation/analytics/workflows/architecto/insights",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/analytics/workflows/{workflow}/insights

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow   string     

The workflow. Example: architecto

Get workflow health score

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/analytics/workflows/architecto/health" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/analytics/workflows/architecto/health"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f02cecde-50af-4a7f-8abe-012addbff48a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.757193Z",
    "context": {
        "path": "/api/api/automation/analytics/workflows/architecto/health",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/analytics/workflows/{workflow}/health

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow   string     

The workflow. Example: architecto

Export analytics data

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/analytics/workflows/architecto/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/analytics/workflows/architecto/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f72edfeb-c78e-4897-be13-1c6c2ed779e7
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.760133Z",
    "context": {
        "path": "/api/api/automation/analytics/workflows/architecto/export",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/analytics/workflows/{workflow}/export

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow   string     

The workflow. Example: architecto

Get global analytics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/analytics/global" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/analytics/global"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8935d005-534f-486b-bbeb-8811e5e6efdb
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.762659Z",
    "context": {
        "path": "/api/api/automation/analytics/global",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/analytics/global

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get real-time monitoring data

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/analytics/monitoring" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/analytics/monitoring"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: d8db4987-b5f2-4636-b6fc-c36c3b07476f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.765856Z",
    "context": {
        "path": "/api/api/automation/analytics/monitoring",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/automation/analytics/monitoring

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get workflow templates

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/automation/public-templates" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/public-templates"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-233803a2535e62126c74b7e4a690908e-ceeb8c7f1452a90a-01
x-trace-id: 233803a2535e62126c74b7e4a690908e
x-span-id: ceeb8c7f1452a90a
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496167
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 80394ccd-ff57-40f3-ab24-9eb9cca17261
 

{
    "templates": []
}
 

Request      

GET api/api/automation/public-templates

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Handle generic webhook endpoint

Example request:
curl --request POST \
    "https://forgefile.com/api/api/automation/webhooks/workflows/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/webhooks/workflows/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/automation/webhooks/workflows/{workflow}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workflow   string     

The workflow. Example: architecto

Handle Zapier-style webhook

Example request:
curl --request POST \
    "https://forgefile.com/api/api/automation/webhooks/zapier" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/automation/webhooks/zapier"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/automation/webhooks/zapier

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Get list of workspaces

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/collaboration/workspaces" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7603fa44-f5ea-46d9-8d2a-232570de07a2
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.808863Z",
    "context": {
        "path": "/api/api/collaboration/workspaces",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/collaboration/workspaces

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Create new workspace

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/collaboration/workspaces" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"max_users\": 1,
    \"is_public\": true
}"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "max_users": 1,
    "is_public": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/api/collaboration/workspaces

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

description   string  optional    

Must not be greater than 1000 characters. Example: Et animi quos velit et fugiat.

settings   object  optional    
permissions   object  optional    
max_users   integer  optional    

Must be at least 1. Must not be greater than 50. Example: 1

is_public   boolean  optional    

Example: true

documents   object  optional    

Get workspace details

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/collaboration/workspaces/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c289b28f-3f0e-4439-b7d0-dd9607ffb80b
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.817083Z",
    "context": {
        "path": "/api/api/collaboration/workspaces/564",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/collaboration/workspaces/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the workspace. Example: 564

Update workspace

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/api/collaboration/workspaces/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"description\": \"Et animi quos velit et fugiat.\",
    \"max_users\": 1,
    \"is_public\": false,
    \"status\": \"archived\"
}"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "description": "Et animi quos velit et fugiat.",
    "max_users": 1,
    "is_public": false,
    "status": "archived"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/api/collaboration/workspaces/{id}

PATCH api/api/collaboration/workspaces/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the workspace. Example: 564

Body Parameters

name   string  optional    

Must not be greater than 255 characters. Example: b

description   string  optional    

Must not be greater than 1000 characters. Example: Et animi quos velit et fugiat.

settings   object  optional    
permissions   object  optional    
max_users   integer  optional    

Must be at least 1. Must not be greater than 50. Example: 1

is_public   boolean  optional    

Example: false

status   string  optional    

Example: archived

Must be one of:
  • active
  • inactive
  • archived

Delete workspace

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/api/collaboration/workspaces/564" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/564"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/api/collaboration/workspaces/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the workspace. Example: 564

Join workspace

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/join" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/join"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/collaboration/workspaces/{workspace_id}/join

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Leave workspace

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/leave" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/leave"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/collaboration/workspaces/{workspace_id}/leave

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Apply operation to workspace

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/operations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"insert\",
    \"document_id\": \"architecto\",
    \"path\": []
}"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/operations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "insert",
    "document_id": "architecto",
    "path": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/api/collaboration/workspaces/{workspace_id}/operations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Body Parameters

type   string     

Example: insert

Must be one of:
  • insert
  • delete
  • update
  • move
document_id   string     

Example: architecto

path   object     
old_value   string  optional    
new_value   string  optional    
dependencies   object  optional    
metadata   object  optional    

Update user presence

requires authentication

Example request:
curl --request PUT \
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/presence" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"cursor\": {
        \"x\": 4326.41688,
        \"y\": 4326.41688
    },
    \"selection\": {
        \"start\": 77,
        \"end\": 8
    },
    \"status\": \"idle\"
}"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/presence"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "cursor": {
        "x": 4326.41688,
        "y": 4326.41688
    },
    "selection": {
        "start": 77,
        "end": 8
    },
    "status": "idle"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/api/collaboration/workspaces/{workspace_id}/presence

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Body Parameters

cursor   object  optional    
x   number  optional    

Example: 4326.41688

y   number  optional    

Example: 4326.41688

selection   object  optional    
start   integer  optional    

Must be at least 0. Example: 77

end   integer  optional    

Must be at least 0. Example: 8

status   string  optional    

Example: idle

Must be one of:
  • active
  • idle

Get workspace presence

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/collaboration/workspaces/architecto/presence" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/presence"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8e398ea2-fc70-4c36-97d2-2e3c07d3e91f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.835872Z",
    "context": {
        "path": "/api/api/collaboration/workspaces/architecto/presence",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/collaboration/workspaces/{workspace_id}/presence

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Get workspace sessions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/collaboration/workspaces/architecto/sessions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/sessions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 8f40e484-8142-4e27-ab98-c5552e0cf173
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.839109Z",
    "context": {
        "path": "/api/api/collaboration/workspaces/architecto/sessions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/collaboration/workspaces/{workspace_id}/sessions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Save workspace snapshot

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/snapshot" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/snapshot"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/collaboration/workspaces/{workspace_id}/snapshot

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Get workspace history

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/collaboration/workspaces/architecto/history" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/history"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b2c2afa9-c737-421b-a929-b14cff28f8ac
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.843040Z",
    "context": {
        "path": "/api/api/collaboration/workspaces/architecto/history",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/collaboration/workspaces/{workspace_id}/history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Get workspace statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/api/collaboration/workspaces/architecto/statistics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/statistics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0cfa2f3b-8401-4dd4-b5af-cbfb8fc1e04a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.846061Z",
    "context": {
        "path": "/api/api/collaboration/workspaces/architecto/statistics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/api/collaboration/workspaces/{workspace_id}/statistics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Add document to workspace

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/documents" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"document_id\": \"architecto\"
}"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/documents"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "document_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/api/collaboration/workspaces/{workspace_id}/documents

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

Body Parameters

document_id   string     

Example: architecto

metadata   object  optional    

Remove document from workspace

requires authentication

Example request:
curl --request DELETE \
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/documents/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/workspaces/architecto/documents/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/api/collaboration/workspaces/{workspace_id}/documents/{documentId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

workspace_id   string     

The ID of the workspace. Example: architecto

documentId   string     

Example: architecto

POST api/api/collaboration/realtime/auth

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/api/collaboration/realtime/auth" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/api/collaboration/realtime/auth"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/api/collaboration/realtime/auth

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get AI models marketplace

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ai/models/marketplace" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"category\": \"architecto\",
    \"provider\": \"architecto\",
    \"capability\": \"architecto\",
    \"max_cost\": 39,
    \"min_rating\": 2,
    \"per_page\": 16,
    \"page\": 27
}"
const url = new URL(
    "https://forgefile.com/api/ai/models/marketplace"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "category": "architecto",
    "provider": "architecto",
    "capability": "architecto",
    "max_cost": 39,
    "min_rating": 2,
    "per_page": 16,
    "page": 27
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ab3e5fe9-aac3-4873-9655-2abe6643b534
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.873185Z",
    "context": {
        "path": "/api/ai/models/marketplace",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ai/models/marketplace

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

category   string  optional    

Example: architecto

provider   string  optional    

Example: architecto

capability   string  optional    

Example: architecto

max_cost   number  optional    

Must be at least 0. Example: 39

min_rating   number  optional    

Must be at least 0. Must not be greater than 5. Example: 2

per_page   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 16

page   integer  optional    

Must be at least 1. Example: 27

Get optimal model for task

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/models/optimal" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"code_generation\",
    \"priority\": \"balanced\",
    \"budget\": 27,
    \"complexity\": \"medium\",
    \"expected_length\": 22
}"
const url = new URL(
    "https://forgefile.com/api/ai/models/optimal"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "code_generation",
    "priority": "balanced",
    "budget": 27,
    "complexity": "medium",
    "expected_length": 22
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/models/optimal

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

type   string     

Example: code_generation

Must be one of:
  • text_generation
  • text_classification
  • image_generation
  • code_generation
  • translation
  • analysis
priority   string  optional    

Example: balanced

Must be one of:
  • performance
  • cost
  • speed
  • balanced
budget   number  optional    

Must be at least 0. Example: 27

complexity   string  optional    

Example: medium

Must be one of:
  • simple
  • medium
  • complex
expected_length   integer  optional    

Must be at least 1. Must not be greater than 100000. Example: 22

Get model comparison

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/models/compare" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"models\": [
        16
    ],
    \"criteria\": [
        \"efficiency\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/ai/models/compare"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "models": [
        16
    ],
    "criteria": [
        "efficiency"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/models/compare

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

models   integer[]  optional    

The id of an existing record in the ai_models table.

criteria   string[]  optional    
Must be one of:
  • performance
  • cost
  • speed
  • reliability
  • efficiency

Train custom model

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/models/train" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"b\",
    \"type\": \"image_classification\",
    \"dataset_info\": {
        \"record_count\": 95,
        \"format\": \"architecto\"
    },
    \"base_model\": \"architecto\",
    \"validation_split\": 1
}"
const url = new URL(
    "https://forgefile.com/api/ai/models/train"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "b",
    "type": "image_classification",
    "dataset_info": {
        "record_count": 95,
        "format": "architecto"
    },
    "base_model": "architecto",
    "validation_split": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/models/train

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

name   string     

Must not be greater than 255 characters. Example: b

type   string     

Example: image_classification

Must be one of:
  • text_classification
  • text_generation
  • question_answering
  • image_classification
dataset_info   object     
record_count   integer     

Must be at least 100. Example: 95

format   string     

Example: architecto

base_model   string  optional    

Example: architecto

hyperparameters   object  optional    
validation_split   number  optional    

Must be at least 0. Must not be greater than 0.5. Example: 1

Get training progress

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ai/models/training/architecto/progress" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ai/models/training/architecto/progress"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1e78d6e9-942c-4643-acec-8aa7714a0832
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.880524Z",
    "context": {
        "path": "/api/ai/models/training/architecto/progress",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ai/models/training/{trainingJobId}/progress

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

trainingJobId   string     

Example: architecto

Get user's custom models

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ai/models/user" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ai/models/user"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: cd32e403-eed9-41af-8dfc-aeff19241cce
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.883354Z",
    "context": {
        "path": "/api/ai/models/user",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ai/models/user

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Optimize costs

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/models/optimize-costs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"usage_period_days\": 1,
    \"target_savings_percentage\": 22
}"
const url = new URL(
    "https://forgefile.com/api/ai/models/optimize-costs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "usage_period_days": 1,
    "target_savings_percentage": 22
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/models/optimize-costs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

usage_period_days   integer  optional    

Must be at least 1. Must not be greater than 365. Example: 1

target_savings_percentage   number  optional    

Must be at least 1. Must not be greater than 50. Example: 22

Get model version history

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ai/models/architecto/versions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/ai/models/architecto/versions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2c6c90c5-5961-4f98-8250-c7890f549610
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.887942Z",
    "context": {
        "path": "/api/ai/models/architecto/versions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ai/models/{modelId}/versions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

modelId   string     

Example: architecto

Rollback model to previous version

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/models/architecto/rollback" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"version_number\": \"bngzmiyvdljnikhw\"
}"
const url = new URL(
    "https://forgefile.com/api/ai/models/architecto/rollback"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "version_number": "bngzmiyvdljnikhw"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/models/{modelId}/rollback

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

modelId   string     

Example: architecto

Body Parameters

version_number   string     

Must not be greater than 20 characters. Example: bngzmiyvdljnikhw

Submit model review

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/models/architecto/reviews" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"rating\": 1,
    \"review_text\": \"n\",
    \"pros\": [
        \"g\"
    ],
    \"cons\": [
        \"z\"
    ],
    \"use_case\": \"m\"
}"
const url = new URL(
    "https://forgefile.com/api/ai/models/architecto/reviews"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "rating": 1,
    "review_text": "n",
    "pros": [
        "g"
    ],
    "cons": [
        "z"
    ],
    "use_case": "m"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/models/{modelId}/reviews

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

modelId   string     

Example: architecto

Body Parameters

rating   integer     

Must be at least 1. Must not be greater than 5. Example: 1

review_text   string  optional    

Must not be greater than 2000 characters. Example: n

pros   string[]  optional    

Must not be greater than 255 characters.

cons   string[]  optional    

Must not be greater than 255 characters.

use_case   string  optional    

Must not be greater than 255 characters. Example: m

Enhance prompt

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/prompts/enhance" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prompt\": \"b\",
    \"context\": {
        \"audience\": \"n\",
        \"tone\": \"g\",
        \"goal\": \"z\",
        \"format\": \"m\",
        \"length\": \"i\"
    }
}"
const url = new URL(
    "https://forgefile.com/api/ai/prompts/enhance"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prompt": "b",
    "context": {
        "audience": "n",
        "tone": "g",
        "goal": "z",
        "format": "m",
        "length": "i"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/prompts/enhance

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

prompt   string     

Must not be greater than 10000 characters. Example: b

context   object  optional    
audience   string  optional    

Must not be greater than 255 characters. Example: n

tone   string  optional    

Must not be greater than 255 characters. Example: g

goal   string  optional    

Must not be greater than 255 characters. Example: z

format   string  optional    

Must not be greater than 255 characters. Example: m

length   string  optional    

Must not be greater than 255 characters. Example: i

Optimize prompt for model

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/prompts/optimize" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prompt\": \"b\",
    \"model_provider\": \"architecto\",
    \"model_id\": \"architecto\"
}"
const url = new URL(
    "https://forgefile.com/api/ai/prompts/optimize"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prompt": "b",
    "model_provider": "architecto",
    "model_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/prompts/optimize

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

prompt   string     

Must not be greater than 10000 characters. Example: b

model_provider   string     

Example: architecto

model_id   string     

Example: architecto

Get prompt templates

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/ai/prompts/templates" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"category\": \"creative\"
}"
const url = new URL(
    "https://forgefile.com/api/ai/prompts/templates"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "category": "creative"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 30d63c57-2cc4-467b-bff2-e322aded8568
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.897737Z",
    "context": {
        "path": "/api/ai/prompts/templates",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/ai/prompts/templates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

category   string  optional    

Example: creative

Must be one of:
  • content
  • technical
  • analytical
  • creative
  • general

Fill prompt template

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/prompts/templates/fill" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"template\": {
        \"id\": \"architecto\",
        \"structure\": \"architecto\"
    },
    \"variables\": []
}"
const url = new URL(
    "https://forgefile.com/api/ai/prompts/templates/fill"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "template": {
        "id": "architecto",
        "structure": "architecto"
    },
    "variables": []
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/prompts/templates/fill

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

template   object     
id   string     

Example: architecto

structure   string     

Example: architecto

variables   object     

Generate prompt variations

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/prompts/variations" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"base_prompt\": \"b\",
    \"count\": 2
}"
const url = new URL(
    "https://forgefile.com/api/ai/prompts/variations"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "base_prompt": "b",
    "count": 2
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/prompts/variations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

base_prompt   string     

Must not be greater than 5000 characters. Example: b

count   integer  optional    

Must be at least 1. Must not be greater than 5. Example: 2

Analyze prompt effectiveness

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/prompts/analyze" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prompt\": \"b\",
    \"response_metrics\": {
        \"relevance\": 1,
        \"accuracy\": 1,
        \"usefulness\": 1
    }
}"
const url = new URL(
    "https://forgefile.com/api/ai/prompts/analyze"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prompt": "b",
    "response_metrics": {
        "relevance": 1,
        "accuracy": 1,
        "usefulness": 1
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/prompts/analyze

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

prompt   string     

Must not be greater than 10000 characters. Example: b

response_metrics   object  optional    
relevance   number  optional    

Must be at least 0. Must not be greater than 1. Example: 1

accuracy   number  optional    

Must be at least 0. Must not be greater than 1. Example: 1

usefulness   number  optional    

Must be at least 0. Must not be greater than 1. Example: 1

Analyze prompt performance over time

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/ai/prompts/performance" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"prompt\": \"b\",
    \"usage_history\": [],
    \"time_range\": \"7d\"
}"
const url = new URL(
    "https://forgefile.com/api/ai/prompts/performance"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "prompt": "b",
    "usage_history": [],
    "time_range": "7d"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/ai/prompts/performance

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

prompt   string     

Must not be greater than 5000 characters. Example: b

usage_history   object     
time_range   string  optional    

Example: 7d

Must be one of:
  • 7d
  • 30d
  • 90d

Get search suggestions

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/search/suggestions" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"b\",
    \"limit\": 12
}"
const url = new URL(
    "https://forgefile.com/api/search/suggestions"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query": "b",
    "limit": 12
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 67234f2d-709c-4107-9916-5bb9f5d9bf59
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.926382Z",
    "context": {
        "path": "/api/search/suggestions",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/search/suggestions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

query   string     

Must not be greater than 200 characters. Example: b

context   object  optional    
limit   integer  optional    

Must be at least 1. Must not be greater than 20. Example: 12

Get personalized search results

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/search/personalized" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"b\",
    \"limit\": 22
}"
const url = new URL(
    "https://forgefile.com/api/search/personalized"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query": "b",
    "limit": 22
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/search/personalized

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

query   string     

Must not be greater than 500 characters. Example: b

limit   integer  optional    

Must be at least 1. Must not be greater than 50. Example: 22

Perform faceted search

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/search/faceted" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"b\",
    \"search_type\": \"natural_language\",
    \"filters\": {
        \"content_types\": [
            \"video\"
        ],
        \"file_types\": [
            \"ngzmiyvdljnikhwa\"
        ],
        \"date_from\": \"2026-09-04T04:28:27\",
        \"date_to\": \"2052-09-27\",
        \"size_min\": 39,
        \"size_max\": 84,
        \"languages\": [
            \"zm\"
        ]
    },
    \"limit\": 15,
    \"offset\": 76,
    \"sort_by\": \"date\",
    \"sort_order\": \"desc\",
    \"include_facets\": true,
    \"session_id\": \"v\",
    \"enable_facets\": false
}"
const url = new URL(
    "https://forgefile.com/api/search/faceted"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query": "b",
    "search_type": "natural_language",
    "filters": {
        "content_types": [
            "video"
        ],
        "file_types": [
            "ngzmiyvdljnikhwa"
        ],
        "date_from": "2026-09-04T04:28:27",
        "date_to": "2052-09-27",
        "size_min": 39,
        "size_max": 84,
        "languages": [
            "zm"
        ]
    },
    "limit": 15,
    "offset": 76,
    "sort_by": "date",
    "sort_order": "desc",
    "include_facets": true,
    "session_id": "v",
    "enable_facets": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/search/faceted

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

query   string     

Must not be greater than 500 characters. Example: b

search_type   string  optional    

Example: natural_language

Must be one of:
  • semantic
  • keyword
  • hybrid
  • natural_language
  • personalized
filters   object  optional    
content_types   string[]  optional    
Must be one of:
  • document
  • image
  • video
  • audio
  • text
file_types   string[]  optional    

Must not be greater than 20 characters.

date_from   string  optional    

Must be a valid date. Example: 2026-09-04T04:28:27

date_to   string  optional    

Must be a valid date. Must be a date after or equal to filters.date_from. Example: 2052-09-27

size_min   integer  optional    

Must be at least 0. Example: 39

size_max   integer  optional    

Must be at least 0. Example: 84

languages   string[]  optional    

Must be 2 characters.

limit   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 15

offset   integer  optional    

Must be at least 0. Example: 76

sort_by   string  optional    

Example: date

Must be one of:
  • relevance
  • date
  • size
  • popularity
sort_order   string  optional    

Example: desc

Must be one of:
  • asc
  • desc
include_facets   boolean  optional    

Example: true

session_id   string  optional    

Must not be greater than 100 characters. Example: v

facet_filters   object[]  optional    
enable_facets   boolean  optional    

Example: false

Search with advanced filters

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/search/filtered" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"b\",
    \"filters\": {
        \"quality_score\": 1
    },
    \"limit\": 22
}"
const url = new URL(
    "https://forgefile.com/api/search/filtered"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query": "b",
    "filters": {
        "quality_score": 1
    },
    "limit": 22
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/search/filtered

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

query   string     

Must not be greater than 500 characters. Example: b

filters   object     
content_types   object  optional    
date_range   object  optional    
size_range   object  optional    
quality_score   number  optional    

Must be at least 0. Must not be greater than 1. Example: 1

limit   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 22

Get search analytics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/search/analytics" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"period\": \"90d\",
    \"group_by\": \"month\",
    \"metrics\": [
        \"top_queries\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/search/analytics"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "period": "90d",
    "group_by": "month",
    "metrics": [
        "top_queries"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 7d886e60-3a78-487a-8217-2a49e71f6450
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.940181Z",
    "context": {
        "path": "/api/search/analytics",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/search/analytics

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

period   string  optional    

Example: 90d

Must be one of:
  • 7d
  • 30d
  • 90d
  • 1y
group_by   string  optional    

Example: month

Must be one of:
  • day
  • week
  • month
metrics   string[]  optional    
Must be one of:
  • queries
  • success_rate
  • avg_response_time
  • top_queries
  • popular_filters

Get search insights and recommendations

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/search/insights" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/search/insights"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: ef5c777a-99c4-4bb9-9801-59c7bd6cf12f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.943018Z",
    "context": {
        "path": "/api/search/insights",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/search/insights

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/search/trending" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"period\": \"7d\",
    \"limit\": 1,
    \"category\": \"architecto\"
}"
const url = new URL(
    "https://forgefile.com/api/search/trending"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "period": "7d",
    "limit": 1,
    "category": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: e0427705-0f29-4aec-85fa-db5e5a1938b7
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.947489Z",
    "context": {
        "path": "/api/search/trending",
        "method": "GET",
        "user_id": null
    }
}
 

Get search history for authenticated user

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/search/history" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"limit\": 1,
    \"offset\": 39,
    \"period\": \"1d\"
}"
const url = new URL(
    "https://forgefile.com/api/search/history"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "limit": 1,
    "offset": 39,
    "period": "1d"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 2b342e18-9737-4aeb-906b-2d8eb93501a2
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.963702Z",
    "context": {
        "path": "/api/search/history",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/search/history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

limit   integer  optional    

Must be at least 1. Must not be greater than 100. Example: 1

offset   integer  optional    

Must be at least 0. Example: 39

period   string  optional    

Example: 1d

Must be one of:
  • 1d
  • 7d
  • 30d
  • 90d

Re-run a previous search

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/search/rerun" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query_id\": \"architecto\"
}"
const url = new URL(
    "https://forgefile.com/api/search/rerun"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query_id": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/search/rerun

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

query_id   string     

Example: architecto

modify_filters   object  optional    

Track result click

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/search/track-click" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query_id\": \"architecto\",
    \"result_id\": 16,
    \"position\": 22,
    \"dwell_time\": 84,
    \"interaction_type\": \"hover\"
}"
const url = new URL(
    "https://forgefile.com/api/search/track-click"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query_id": "architecto",
    "result_id": 16,
    "position": 22,
    "dwell_time": 84,
    "interaction_type": "hover"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/search/track-click

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

query_id   string     

Example: architecto

result_id   integer     

Example: 16

position   integer  optional    

Must be at least 1. Example: 22

dwell_time   number  optional    

Must be at least 0. Example: 84

interaction_type   string  optional    

Example: hover

Must be one of:
  • click
  • hover
  • scroll
  • share

Submit search feedback

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/search/feedback" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query_id\": \"architecto\",
    \"satisfaction_score\": 2,
    \"feedback_text\": \"g\",
    \"feedback_type\": \"general\"
}"
const url = new URL(
    "https://forgefile.com/api/search/feedback"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query_id": "architecto",
    "satisfaction_score": 2,
    "feedback_text": "g",
    "feedback_type": "general"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/search/feedback

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

query_id   string     

Example: architecto

satisfaction_score   integer     

Must be at least 1. Must not be greater than 5. Example: 2

feedback_text   string  optional    

Must not be greater than 1000 characters. Example: g

feedback_type   string  optional    

Example: general

Must be one of:
  • general
  • relevance
  • performance
  • usability

Export search results

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/search/export" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query_id\": \"architecto\",
    \"format\": \"json\"
}"
const url = new URL(
    "https://forgefile.com/api/search/export"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query_id": "architecto",
    "format": "json"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 71538ed1-2566-4bf0-97e0-a37818b73ac5
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.972454Z",
    "context": {
        "path": "/api/search/export",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/search/export

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

query_id   string     

Example: architecto

format   string  optional    

Example: json

Must be one of:
  • json
  • csv
  • xml

Get search configuration options

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/search/config" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/search/config"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 9ebf7196-8afd-47cf-a447-2e579e192d81
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.976024Z",
    "context": {
        "path": "/api/search/config",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/search/config

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Get search analytics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/admin/search/dashboard" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"period\": \"90d\",
    \"group_by\": \"day\",
    \"metrics\": [
        \"popular_filters\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/admin/search/dashboard"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "period": "90d",
    "group_by": "day",
    "metrics": [
        "popular_filters"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 47fecf3c-85ea-4f7d-bb3f-ab0f55d0b33a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.979983Z",
    "context": {
        "path": "/api/admin/search/dashboard",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/admin/search/dashboard

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

period   string  optional    

Example: 90d

Must be one of:
  • 7d
  • 30d
  • 90d
  • 1y
group_by   string  optional    

Example: day

Must be one of:
  • day
  • week
  • month
metrics   string[]  optional    
Must be one of:
  • queries
  • success_rate
  • avg_response_time
  • top_queries
  • popular_filters

Get search analytics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/admin/search/performance" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"period\": \"30d\",
    \"group_by\": \"week\",
    \"metrics\": [
        \"avg_response_time\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/admin/search/performance"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "period": "30d",
    "group_by": "week",
    "metrics": [
        "avg_response_time"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 5bfa42bf-8284-4afd-b753-a1a8c467d1fe
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.982997Z",
    "context": {
        "path": "/api/admin/search/performance",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/admin/search/performance

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

period   string  optional    

Example: 30d

Must be one of:
  • 7d
  • 30d
  • 90d
  • 1y
group_by   string  optional    

Example: week

Must be one of:
  • day
  • week
  • month
metrics   string[]  optional    
Must be one of:
  • queries
  • success_rate
  • avg_response_time
  • top_queries
  • popular_filters

Get search analytics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/admin/search/queries" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"period\": \"30d\",
    \"group_by\": \"month\",
    \"metrics\": [
        \"avg_response_time\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/admin/search/queries"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "period": "30d",
    "group_by": "month",
    "metrics": [
        "avg_response_time"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 86a7c74e-13c1-4e71-9e00-be7a86c88a6f
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.985535Z",
    "context": {
        "path": "/api/admin/search/queries",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/admin/search/queries

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

period   string  optional    

Example: 30d

Must be one of:
  • 7d
  • 30d
  • 90d
  • 1y
group_by   string  optional    

Example: month

Must be one of:
  • day
  • week
  • month
metrics   string[]  optional    
Must be one of:
  • queries
  • success_rate
  • avg_response_time
  • top_queries
  • popular_filters

Get search analytics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/admin/search/behavior" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"period\": \"7d\",
    \"group_by\": \"week\",
    \"metrics\": [
        \"queries\"
    ]
}"
const url = new URL(
    "https://forgefile.com/api/admin/search/behavior"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "period": "7d",
    "group_by": "week",
    "metrics": [
        "queries"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3a786d78-dadc-4ee5-ab46-038ccba22d1e
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:27.988854Z",
    "context": {
        "path": "/api/admin/search/behavior",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/admin/search/behavior

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

period   string  optional    

Example: 7d

Must be one of:
  • 7d
  • 30d
  • 90d
  • 1y
group_by   string  optional    

Example: week

Must be one of:
  • day
  • week
  • month
metrics   string[]  optional    
Must be one of:
  • queries
  • success_rate
  • avg_response_time
  • top_queries
  • popular_filters

Get marketplace statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: da77c35e-048d-4a60-be0c-941cfcd26e63
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:28.004664Z",
    "context": {
        "path": "/api/marketplace/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/search" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"b\",
    \"limit\": 22
}"
const url = new URL(
    "https://forgefile.com/api/marketplace/search"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query": "b",
    "limit": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 78a89744-6a72-4ee2-8653-6018a70bfe64
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:28.008347Z",
    "context": {
        "path": "/api/marketplace/search",
        "method": "GET",
        "user_id": null
    }
}
 

Get all API providers

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/providers" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"category\": \"architecto\",
    \"popular_only\": true,
    \"enterprise_only\": false,
    \"supports_feature\": \"architecto\",
    \"sort_by\": \"name\",
    \"sort_direction\": \"asc\"
}"
const url = new URL(
    "https://forgefile.com/api/marketplace/providers"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "category": "architecto",
    "popular_only": true,
    "enterprise_only": false,
    "supports_feature": "architecto",
    "sort_by": "name",
    "sort_direction": "asc"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: b5fb1fd3-eea4-481f-9888-b3a5dd812e25
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:28.010999Z",
    "context": {
        "path": "/api/marketplace/providers",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/providers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

category   string  optional    

Example: architecto

popular_only   boolean  optional    

Example: true

enterprise_only   boolean  optional    

Example: false

supports_feature   string  optional    

Example: architecto

sort_by   string  optional    

Example: name

Must be one of:
  • name
  • created_at
  • is_popular
sort_direction   string  optional    

Example: asc

Must be one of:
  • asc
  • desc

Get provider details

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/providers/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/providers/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 1a2774a5-6633-4582-b2b0-d6e29d0edf1a
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:28.014854Z",
    "context": {
        "path": "/api/marketplace/providers/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/providers/{slug}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The slug of the provider. Example: architecto

Get provider usage statistics

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/providers/architecto/stats" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"start_date\": \"2026-09-04T04:28:28\",
    \"end_date\": \"2026-09-04T04:28:28\"
}"
const url = new URL(
    "https://forgefile.com/api/marketplace/providers/architecto/stats"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "start_date": "2026-09-04T04:28:28",
    "end_date": "2026-09-04T04:28:28"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 67b89007-8764-4bba-8c46-67caabe644e2
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:28.018353Z",
    "context": {
        "path": "/api/marketplace/providers/architecto/stats",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/providers/{providerId}/stats

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

providerId   string     

Example: architecto

Body Parameters

start_date   string  optional    

Must be a valid date. Example: 2026-09-04T04:28:28

end_date   string  optional    

Must be a valid date. Example: 2026-09-04T04:28:28

Get API documentation

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/providers/architecto/documentation" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/providers/architecto/documentation"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 53b86f99-1694-4a4a-bb26-72a8678cc2bc
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:28.026713Z",
    "context": {
        "path": "/api/marketplace/providers/architecto/documentation",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/providers/{providerId}/documentation

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

providerId   string     

Example: architecto

Get provider endpoints

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/providers/architecto/endpoints" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"category\": \"architecto\",
    \"method\": \"POST\",
    \"requires_auth\": true
}"
const url = new URL(
    "https://forgefile.com/api/marketplace/providers/architecto/endpoints"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "category": "architecto",
    "method": "POST",
    "requires_auth": true
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 910e2b41-4c81-41f0-a904-485b651248bc
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:28.033283Z",
    "context": {
        "path": "/api/marketplace/providers/architecto/endpoints",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/providers/{providerId}/endpoints

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

providerId   string     

Example: architecto

Body Parameters

category   string  optional    

Example: architecto

method   string  optional    

Example: POST

Must be one of:
  • GET
  • POST
  • PUT
  • DELETE
requires_auth   boolean  optional    

Example: true

Get endpoint details

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/endpoints/architecto" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/endpoints/architecto"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: f9f942c8-3bff-4b50-ac9c-254f70491f29
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:28.038138Z",
    "context": {
        "path": "/api/marketplace/endpoints/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/endpoints/{endpointId}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

endpointId   string     

Example: architecto

Test API endpoint

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/marketplace/endpoints/architecto/test" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/endpoints/architecto/test"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/marketplace/endpoints/{endpointId}/test

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

endpointId   string     

Example: architecto

Execute API call

requires authentication

Example request:
curl --request POST \
    "https://forgefile.com/api/marketplace/endpoints/architecto/execute" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/endpoints/architecto/execute"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/marketplace/endpoints/{endpointId}/execute

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

endpointId   string     

Example: architecto

Get user API usage

requires authentication

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/usage" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"start_date\": \"2026-09-04T04:28:28\",
    \"end_date\": \"2026-09-04T04:28:28\"
}"
const url = new URL(
    "https://forgefile.com/api/marketplace/usage"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "start_date": "2026-09-04T04:28:28",
    "end_date": "2026-09-04T04:28:28"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: c4362c5b-3076-4900-994e-ef75d8001233
 

{
    "success": false,
    "error_code": "authentication_failed",
    "message": "Unauthenticated.",
    "timestamp": "2026-09-04T04:28:28.046186Z",
    "context": {
        "path": "/api/marketplace/usage",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/usage

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

start_date   string  optional    

Must be a valid date. Example: 2026-09-04T04:28:28

end_date   string  optional    

Must be a valid date. Example: 2026-09-04T04:28:28

Get all API providers

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/public/providers" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"category\": \"architecto\",
    \"popular_only\": true,
    \"enterprise_only\": false,
    \"supports_feature\": \"architecto\",
    \"sort_by\": \"is_popular\",
    \"sort_direction\": \"desc\"
}"
const url = new URL(
    "https://forgefile.com/api/marketplace/public/providers"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "category": "architecto",
    "popular_only": true,
    "enterprise_only": false,
    "supports_feature": "architecto",
    "sort_by": "is_popular",
    "sort_direction": "desc"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-049e5cbffeff79c418fac9d260fc1c1d-1924b1cce5dcee2e-01
x-trace-id: 049e5cbffeff79c418fac9d260fc1c1d
x-span-id: 1924b1cce5dcee2e
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496168
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 0e529ac1-5673-4feb-923d-f32e943bb8a6
 

{
    "success": true,
    "data": []
}
 

Request      

GET api/marketplace/public/providers

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

category   string  optional    

Example: architecto

popular_only   boolean  optional    

Example: true

enterprise_only   boolean  optional    

Example: false

supports_feature   string  optional    

Example: architecto

sort_by   string  optional    

Example: is_popular

Must be one of:
  • name
  • created_at
  • is_popular
sort_direction   string  optional    

Example: desc

Must be one of:
  • asc
  • desc

Get provider details

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/public/providers/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/public/providers/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-88d5b60fb533f3c500041765adf2b10e-d452ae47924427ca-01
x-trace-id: 88d5b60fb533f3c500041765adf2b10e
x-span-id: d452ae47924427ca
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496168
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 6bf2ff58-c5c2-4b6d-a2af-2e37649560b5
 

{
    "success": false,
    "message": "Provider not found"
}
 

Request      

GET api/marketplace/public/providers/{slug}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

slug   string     

The slug of the provider. Example: architecto

Get API documentation

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/public/providers/architecto/documentation" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/public/providers/architecto/documentation"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-fd7715dbcf32b9e89580f890460d4bc5-b2efb7863b5949ba-01
x-trace-id: fd7715dbcf32b9e89580f890460d4bc5
x-span-id: b2efb7863b5949ba
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496168
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 986083f9-7fb0-4526-9b2e-4a006e3641a3
 

{
    "success": false,
    "error_code": "internal_server_error",
    "message": "Something went wrong on our side. Please try again, and contact support if the problem persists.",
    "timestamp": "2026-09-04T04:28:28.119762Z",
    "context": {
        "path": "/api/marketplace/public/providers/architecto/documentation",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/public/providers/{providerId}/documentation

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

providerId   string     

Example: architecto

Get provider endpoints

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/public/providers/architecto/endpoints" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"category\": \"architecto\",
    \"method\": \"POST\",
    \"requires_auth\": true
}"
const url = new URL(
    "https://forgefile.com/api/marketplace/public/providers/architecto/endpoints"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "category": "architecto",
    "method": "POST",
    "requires_auth": true
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-fb4f4f34802a404561c11e1a8b8cee10-c07d38015df8a062-01
x-trace-id: fb4f4f34802a404561c11e1a8b8cee10
x-span-id: c07d38015df8a062
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496168
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: a5d45797-aeb2-4ef8-b1d7-cfe47b3aa756
 

{
    "success": false,
    "error_code": "internal_server_error",
    "message": "Something went wrong on our side. Please try again, and contact support if the problem persists.",
    "timestamp": "2026-09-04T04:28:28.149749Z",
    "context": {
        "path": "/api/marketplace/public/providers/architecto/endpoints",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/public/providers/{providerId}/endpoints

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

providerId   string     

Example: architecto

Body Parameters

category   string  optional    

Example: architecto

method   string  optional    

Example: POST

Must be one of:
  • GET
  • POST
  • PUT
  • DELETE
requires_auth   boolean  optional    

Example: true

Get endpoint details

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/public/endpoints/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/public/endpoints/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (500):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-7929e473285bfc6095e4e6ad0e76571a-848a5c9feb4f1a32-01
x-trace-id: 7929e473285bfc6095e4e6ad0e76571a
x-span-id: 848a5c9feb4f1a32
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496168
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 15d18242-e116-4430-93c5-9f8512c8cedf
 

{
    "success": false,
    "error_code": "internal_server_error",
    "message": "Something went wrong on our side. Please try again, and contact support if the problem persists.",
    "timestamp": "2026-09-04T04:28:28.184049Z",
    "context": {
        "path": "/api/marketplace/public/endpoints/architecto",
        "method": "GET",
        "user_id": null
    }
}
 

Request      

GET api/marketplace/public/endpoints/{endpointId}

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

endpointId   string     

Example: architecto

Get marketplace statistics

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/public/stats" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://forgefile.com/api/marketplace/public/stats"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-377d1211579ff36929405804d1bfc297-f368dd7ad72a6e16-01
x-trace-id: 377d1211579ff36929405804d1bfc297
x-span-id: f368dd7ad72a6e16
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496168
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: 3e84d6f9-4fc8-42d2-a308-48c8cfa62f42
 

{
    "success": true,
    "data": {
        "total_providers": 10,
        "total_endpoints": 8,
        "popular_providers": 10,
        "enterprise_providers": 5,
        "categories": [
            "communication",
            "productivity",
            "storage",
            "backup",
            "payments",
            "finance",
            "marketing",
            "automation",
            "development",
            "collaboration",
            "documentation",
            "project_management"
        ],
        "auth_methods": [
            "oauth2",
            "api_key",
            "personal_access_token",
            "oauth1"
        ],
        "endpoints_by_method": {
            "GET": 4,
            "POST": 4
        },
        "endpoints_by_category": {
            "channels": 1,
            "files": 1,
            "issues": 1,
            "payments": 1,
            "messaging": 1
        }
    }
}
 

Request      

GET api/marketplace/public/stats

Headers

Content-Type        

Example: application/json

Accept        

Example: application/json

Example request:
curl --request GET \
    --get "https://forgefile.com/api/marketplace/public/search" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"query\": \"b\",
    \"limit\": 22
}"
const url = new URL(
    "https://forgefile.com/api/marketplace/public/search"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "query": "b",
    "limit": 22
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
traceparent: 00-a7bc1cf495f27ca904d544daa9a638a9-b783a869c77c6d91-01
x-trace-id: a7bc1cf495f27ca904d544daa9a638a9
x-span-id: b783a869c77c6d91
x-sampled: true
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 1788496168
x-api-version: 2024-01-01
x-api-supported-versions: 2024-01-01, 2023-12-01, 2023-06-01
x-content-type-options: nosniff
x-frame-options: DENY
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
permissions-policy: geolocation=(), microphone=(), camera=()
access-control-allow-origin: *
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-headers: Content-Type, Authorization, X-Requested-With
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://js.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://code.jquery.com https://www.googletagmanager.com https://static.cloudflareinsights.com blob:; style-src 'self' 'unsafe-inline' http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://cdn.jsdelivr.net https://unpkg.com https://fonts.googleapis.com; img-src 'self' data: http://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://storage.googleapis.com https://placehold.co; font-src 'self' data: https://cdn.forgefile.com http://localhost:5173 http://localhost:8001 https://cdn.jsdelivr.net https://unpkg.com https://fonts.gstatic.com; connect-src 'self' https://api.stripe.com http://localhost:5173 ws://localhost:5173 http://localhost:8001 https://cdn.forgefile.com https://ipapi.co https://api.iconify.design https://api.unisvg.com https://api.simplesvg.com https://www.googletagmanager.com https://www.google-analytics.com https://www.google.com https://js.stripe.com https://static.cloudflareinsights.com; frame-src https://js.stripe.com https://hooks.stripe.com; manifest-src 'self' https://cdn.forgefile.com http://localhost:8001; frame-ancestors 'self'
x-request-id: fa6d0b77-5250-4656-afc8-e5f7cae6b19c
 

{
    "success": true,
    "data": {
        "query": "b",
        "providers": [
            {
                "id": 1,
                "name": "Slack",
                "slug": "slack",
                "description": "Team communication and collaboration platform",
                "categories": [
                    "communication",
                    "productivity"
                ],
                "is_popular": true,
                "type": "provider"
            },
            {
                "id": 2,
                "name": "Google Workspace",
                "slug": "google-workspace",
                "description": "Suite of cloud computing, productivity and collaboration tools",
                "categories": [
                    "productivity",
                    "storage",
                    "communication"
                ],
                "is_popular": true,
                "type": "provider"
            },
            {
                "id": 3,
                "name": "Microsoft 365",
                "slug": "microsoft-365",
                "description": "Productivity and collaboration suite by Microsoft",
                "categories": [
                    "productivity",
                    "communication",
                    "storage"
                ],
                "is_popular": true,
                "type": "provider"
            },
            {
                "id": 4,
                "name": "Dropbox",
                "slug": "dropbox",
                "description": "File hosting service for cloud storage",
                "categories": [
                    "storage",
                    "backup"
                ],
                "is_popular": true,
                "type": "provider"
            },
            {
                "id": 8,
                "name": "GitHub",
                "slug": "github",
                "description": "Development platform for version control and collaboration",
                "categories": [
                    "development",
                    "collaboration"
                ],
                "is_popular": true,
                "type": "provider"
            },
            {
                "id": 10,
                "name": "Trello",
                "slug": "trello",
                "description": "Web-based project management application",
                "categories": [
                    "project_management",
                    "productivity"
                ],
                "is_popular": true,
                "type": "provider"
            }
        ],
        "endpoints": [
            {
                "id": 7,
                "name": "Create Issue",
                "description": "Create a new issue in a GitHub repository",
                "method": "POST",
                "category": "issues",
                "provider": "GitHub",
                "type": "endpoint"
            },
            {
                "id": 8,
                "name": "List Repository Issues",
                "description": "List issues in a GitHub repository",
                "method": "GET",
                "category": "issues",
                "provider": "GitHub",
                "type": "endpoint"
            }
        ],
        "total_results": 8
    }
}