Documentation
How SyncNode Works & Integrations Guide
Workflow Overview
- Submit a task (text, image, etc.) via the dashboard or API.
- SyncNode routes your request to the selected provider.
- Provider processes the task and returns the result.
- View results in the dashboard or receive them via API/webhook.
Integrations
Below are examples for querying different providers. You can use the dashboard, or send requests directly to the API.
ChatGPT (OpenRouter)
cURL
curl -X POST https://run.syncnode.ai/chat-completion \
-H "Content-Type: application/json" \
-d '{
"uid": "__UID-1__",
"model": "openai/gpt-3.5-turbo-0613",
"prompt": "Hello, how are you?",
"messages": [
{ "role": "user", "content": "Hello, how are you?" }
],
"max_tokens": 1000,
"temperature": 0.7
}'
JSON
{
"prediction": {
"id": 123,
"uid": "__UID-2__",
"output": {
"id": "gen-1751968854-uNrqV6bWitYNYFADH8Y8",
"provider": "Azure",
"model": "openai/gpt-3.5-turbo-0613",
"object": "chat.completion",
"created": 1751968854,
"choices": [
{
"logprobs": null,
"finish_reason": "stop",
"native_finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! I'm just a computer program, so I don't have feelings, but I'm here and ready to assist you. How can I help you today?",
"refusal": null,
"reasoning": null
}
}
],
"system_fingerprint": "fp_0165350fbb",
"usage": {
"prompt_tokens": 13,
"completion_tokens": 33,
"total_tokens": 46
}
},
"created_at": "2025-07-08T10:00:55.889+00:00",
"cost": 0.03,
"model": "openai/gpt-3.5-turbo-0613",
"prompt": "Hello, how are you?",
"job_id": "2407ec4e-6a3b-4e4e-88fc-9a7d2eadaabf",
"status": "completed",
"updated_at": null,
"error": null
}
}
ChatGPT (SyncNode /chatgpt-completion)
cURL
curl -X POST https://run.syncnode.ai/chatgpt-completion \
-H "Content-Type: application/json" \
-d '{
"uid": "__UID-1__",
"model": "gpt-3.5-turbo",
"messages": [
{ "role": "user", "content": "Tell me a joke about cats." }
],
"max_tokens": 1000,
"temperature": 0.7
}'
JSON
{
"prediction": {
"id": 456,
"uid": "__UID-1__",
"output": {
"id": "gen-1751969999-abc123xyz",
"provider": "OpenAI",
"model": "gpt-3.5-turbo",
"object": "chat.completion",
"created": 1751969999,
"choices": [
{
"logprobs": null,
"finish_reason": "stop",
"native_finish_reason": "stop",
"index": 0,
"message": {
"role": "assistant",
"content": "Why did the cat sit on the computer? Because it wanted to keep an eye on the mouse!",
"refusal": null,
"reasoning": null
}
}
],
"system_fingerprint": "fp_abcdef123456",
"usage": {
"prompt_tokens": 12,
"completion_tokens": 20,
"total_tokens": 32
}
},
"created_at": "2025-07-08T10:05:00.000+00:00",
"cost": 0.03,
"model": "openai/gpt-3.5-turbo-0613",
"prompt": null,
"job_id": "b7e8c4d2-1234-5678-9abc-def012345678",
"status": "completed",
"updated_at": null,
"error": null
}
}
Replicate
cURL
curl -X POST https://run.syncnode.ai/generate \
-H "Content-Type: application/json" \
-d '{
"uid": "__UID-3__",
"model": "bytedance/seedance-1-lite",
"input": {
"fps": 24,
"prompt": "a woman walks in the park",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"camera_fixed": false
}
}'
Replicate Image Example
cURL
curl -X POST https://run.syncnode.ai/generate \
-H "Content-Type: application/json" \
-d '{
"uid": "__UID-5__",
"model": "adirik/realvisxl-v3.0-turbo:3dc73c805b11b4b01a60555e532fd3ab3f0e60d26f6584d9b8ba7e1b95858243",
"input": {
"width": 768,
"height": 768,
"prompt": "Townhouse",
"refine": "no_refiner",
"scheduler": "DPM++_SDE_Karras",
"num_outputs": 1,
"guidance_scale": 2,
"apply_watermark": false,
"high_noise_frac": 0.8,
"negative_prompt": "(worst quality, low quality, illustration, 3d, 2d, painting, cartoons, sketch), open mouth",
"prompt_strength": 0.8,
"num_inference_steps": 25
}
}'
JSON
{
"success": true,
"job_id": "b6nqrw6zbdrmc0cqwqbr8b3dm8",
"get": "https://run.syncnode.ai/prediction-status?job_id=bdad3fmj4drmc0cqwqbr8b3dm8",
"status": "in_progress"
}
Check Replicate Prediction Status
cURL
curl -X GET "https://run.syncnode.ai/prediction-status?job_id=bdad3fmj4drme0cqyeq9bsez00"
JSON
{
"job_id": "bdad3fmj4drme0cqyeq9bsez00",
"replicate_status": "completed",
"output": "https://run.syncnode.ai/gen_12c8e609-58bd-4a47-9619-3520f70d34ea_1752140031948.mp4",
"updated": false
}
General API Usage (GET)
Each API call deducts $1 from your balance and is logged in your usage history with the timestamp and purpose. Ensure your API keys are set before making calls.
cURL
curl -X GET "https://run.syncnode.ai?uid=__UID-1__&what=replicate" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer replicate_key"
what can be:
replicate, chatgpt, huggingfaceThe
Authorization: Bearer ... key must be obtained from the API Keys page.Moderation
Use the SyncNode Moderation endpoint to check text and/or images in a single request. Supports raw text, imageUrl, or imageBase64 with imageMime.
Text + Image (Single Request)
cURL
curl -X POST "https://moderate.syncnode.ai" \
-H "Content-Type: application/json" \
-d '{
"uid": "__UID-1__",
"text": "your prompt text goes here or text to moderate",
"imageUrl": "https://example.com/image.jpg"
}'
JSON
{
"uid": "013af040-d0c6-464d-83f6-eeb984c1d1e7",
"text_moderation": {
"scores": {
"harassment": 0.00004173157606777201,
"harassment/threatening": 0.0000072543618230189156,
"sexual": 0.003077507246275801,
"hate": 0.000013982207564732913,
"hate/threatening": 5.422218970016178e-7,
"illicit": 0.00001177445922838707,
"illicit/violent": 0.000009915273115920183,
"self-harm/intent": 0.0000021782649863110498,
"self-harm/instructions": 0.0000017778551863194697,
"self-harm": 0.000006976470974169522,
"sexual/minors": 0.000026947915555885546,
"violence": 0.0005523259629862285,
"violence/graphic": 0.000009461262661302227
},
"nudity": 0,
"underage": 0,
"vulgar": 0,
"safe": 1
},
"image_moderation": {
"scores": {
"harassment": 0,
"harassment/threatening": 0,
"sexual": 0.00007208380258812108,
"hate": 0,
"hate/threatening": 0,
"illicit": 0,
"illicit/violent": 0,
"self-harm/intent": 0.00024050606249465073,
"self-harm/instructions": 0.00021212635591789767,
"self-harm": 0.004666379063811742,
"sexual/minors": 0,
"violence": 0.02302957246214866,
"violence/graphic": 0.0015974764130775882
},
"nudity": 0,
"underage": 0,
"vulgar": 0,
"safe": 1
},
"overall_moderation": {
"nudity": 0,
"underage": 0,
"vulgar": 0,
"safe": 1
}
}
Text Only
cURL
curl -X POST "https://moderate.syncnode.ai" \
-H "Content-Type: application/json" \
-d '{
"uid": "__UID-1__",
"text": "your prompt text goes here or text to moderate"
}'
JSON
{
"uid": "013af040-d0c6-464d-83f6-eeb984c1d1e7",
"text_moderation": {
"scores": {
"harassment": 0.00004173157606777201,
"harassment/threatening": 0.0000072543618230189156,
"sexual": 0.003077507246275801,
"hate": 0.000013982207564732913,
"hate/threatening": 5.422218970016178e-7,
"illicit": 0.00001177445922838707,
"illicit/violent": 0.000009915273115920183,
"self-harm/intent": 0.0000021782649863110498,
"self-harm/instructions": 0.0000017778551863194697,
"self-harm": 0.000006976470974169522,
"sexual/minors": 0.000026947915555885546,
"violence": 0.0005523259629862285,
"violence/graphic": 0.000009461262661302227
},
"nudity": 0,
"underage": 0,
"vulgar": 0,
"safe": 1
},
"overall_moderation": {
"nudity": 0,
"underage": 0,
"vulgar": 0,
"safe": 1
}
}
Image Only (URL)
cURL
curl -X POST "https://moderate.syncnode.ai" \
-H "Content-Type: application/json" \
-d '{
"uid": "__UID-1__",
"imageUrl": "https://example.com/image.jpg"
}'
JSON
{
"uid": "013af040-d0c6-464d-83f6-eeb984c1d1e7",
"image_moderation": {
"scores": {
"harassment": 0,
"harassment/threatening": 0,
"sexual": 0.00007208380258812108,
"hate": 0,
"hate/threatening": 0,
"illicit": 0,
"illicit/violent": 0,
"self-harm/intent": 0.00024050606249465073,
"self-harm/instructions": 0.00021212635591789767,
"self-harm": 0.004666379063811742,
"sexual/minors": 0,
"violence": 0.02302957246214866,
"violence/graphic": 0.0015974764130775882
},
"nudity": 0,
"underage": 0,
"vulgar": 0,
"safe": 1
},
"overall_moderation": {
"nudity": 0,
"underage": 0,
"vulgar": 0,
"safe": 1
}
}
Image Only (Base64)
cURL
curl -X POST "https://moderate.syncnode.ai" \
-H "Content-Type: application/json" \
-d '{
"uid": "__UID-1__",
"imageBase64": "<BASE64_STRING>",
"imageMime": "image/png"
}'
JSON
{
"uid": "013af040-d0c6-464d-83f6-eeb984c1d1e7",
"image_moderation": {
"scores": {
"harassment": 0,
"harassment/threatening": 0,
"sexual": 0.00007208380258812108,
"hate": 0,
"hate/threatening": 0,
"illicit": 0,
"illicit/violent": 0,
"self-harm/intent": 0.00024050606249465073,
"self-harm/instructions": 0.00021212635591789767,
"self-harm": 0.004666379063811742,
"sexual/minors": 0,
"violence": 0.02302957246214866,
"violence/graphic": 0.0015974764130775882
},
"nudity": 0,
"underage": 0,
"vulgar": 0,
"safe": 1
},
"overall_moderation": {
"nudity": 0,
"underage": 0,
"vulgar": 0,
"safe": 1
}
}
Auto-Generated Inputs
For advanced users, you can paste a JSON payload and SyncNode will auto-generate input forms for each field. This makes it easy to test and customize queries for any provider.
Manual Query & Testing
- Go to the Integrations page (coming soon).
- Select a provider and paste your JSON query.
- Click Run/Test Query to see the response instantly.
Tip: You can find more integration examples and provider-specific docs in the official documentation or by contacting support.