Documentação da API

Documentação da API

Chame todas as capacidades de IA com sua chave de API, pagamento por uso, integre com poucas linhas de código.

Autenticação

Todas as requisições à API devem incluir o header Authorization.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

Obtenha sua chave de API na página "Chaves de API" do console. Uma chave por conta. Para redefinir, use o console; a chave antiga é invalidada imediatamente.

Criar tarefa

POST https://nsfwrouter.xyz/api/v1/tasks/create

Envie uma tarefa de IA ao cluster GPU. As tarefas são assíncronas e retornam um ID. Obtenha resultados via API de consulta ou Webhook.

Parâmetros da requisição
Parâmetro Tipo Obrigatório Descrição
tool_idintSimID da ferramenta, da lista de ferramentas
paramsobjectSimParâmetros da tarefa, objeto JSON, campos dependem da ferramenta
webhook_urlstringNãoURL de callback para notificação de conclusão
priorityintNãoPrioridade da tarefa 1-10, padrão 5
idempotency_keystringNãoChave de idempotência, evita envios duplicados
execution_optionsobjectNãoOpções de execução, objeto JSON
Exemplo de requisição
curl -X POST https://nsfwrouter.xyz/api/v1/tasks/create \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "tool_id": 1,
    "params": {
      "image": "https://example.com/photo.jpg",
      "prompt": "a beautiful landscape"
    },
    "webhook_url": "https://your-server.com/webhook"
  }'
Exemplo de resposta
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

O saldo é verificado antes da chamada. Saldo insuficiente = erro insufficient_coins. As moedas são deduzidas ao enviar a tarefa com sucesso.

Consultar detalhe da tarefa

GET https://nsfwrouter.xyz/api/v1/tasks/query

Consulte detalhes e status por ID. Durante o processamento, o status mais recente é obtido do cluster GPU. Consultas repetidas em 10 segundos retornam cache do banco sem requisições remotas.

Parâmetros de consulta
Parâmetro Tipo Obrigatório Descrição
idintSimID da tarefa
Exemplo de resposta
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 1,
      "task_output_json": [
        {
          "type": "image",
          "url": "https://cdn.example.com/outputs/abc123.png",
          "file_name": "abc123.png",
          "file_size": 1024000,
          "mime_type": "image/png",
          "width": 1024,
          "height": 1024
        }
      ],
      "consume_coins": 5,
      "created_at": 1718200000,
      "completed_at": 1718200015
    }
  }
}
Valores de status da tarefa
status Significado
0Processando
1Concluído
-1Cancelado
-2Falhou

Lista de tarefas

GET https://nsfwrouter.xyz/api/v1/tasks

Consulta paginada das tarefas da conta atual, com filtros por ferramenta, status e período.

Parâmetros de consulta
Parâmetro Tipo Obrigatório Descrição
pageintNãoNúmero da página, padrão 1
page_sizeintNãoTamanho da página, padrão 20, máximo 50
tool_idintNãoFiltrar por ferramenta
statusintNãoFiltrar por status (0/1/-1/-2)
daysintNãoPeríodo em dias, padrão 30
Exemplo de resposta
{
  "code": 0,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 123,
        "tool_id": 1,
        "status": 1,
        "task_output_json": [
          {
            "type": "image",
            "url": "https://cdn.example.com/outputs/abc123.png",
            "file_name": "abc123.png",
            "file_size": 1024000,
            "mime_type": "image/png",
            "width": 1024,
            "height": 1024
          }
        ],
        "error": null,
        "consume_coins": 5,
        "created_at": 1718200000,
        "completed_at": 1718200015
      },
      {
        "id": 122,
        "tool_id": 3,
        "status": 0,
        "task_output_json": [],
        "error": null,
        "consume_coins": 10,
        "created_at": 1718199000,
        "completed_at": 0
      }
    ],
    "page": 1,
    "page_size": 20
  }
}
Descrição dos campos de task_output_json
Campo Tipo Descrição
typestringTipo de resultado: image ou video
urlstringURL CDN do arquivo de resultado
file_namestringNome do arquivo
file_sizeintTamanho do arquivo (bytes)
mime_typestringTipo MIME, ex: image/png, video/mp4
widthintLargura (pixels)
heightintAltura (pixels)

Saldo da conta

GET https://nsfwrouter.xyz/api/v1/account/balance

Consulte o saldo de moedas, recarga total e consumo total da conta atual.

Exemplo de resposta
{
  "code": 0,
  "message": "success",
  "data": {
    "remain_coins": 5000,
    "total_coins": 10000,
    "used_coins": 5000
  }
}

Callback Webhook

Se webhook_url for fornecido, um POST é enviado a essa URL quando a tarefa termina, falha ou é cancelada. O corpo é JSON.

Headers da requisição de callback
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
Corpo da requisição de callback
{
  "event": "task.finished",
  "task": {
    "id": 123,
    "status": 1,
    "task_output_json": [
      {
        "type": "image",
        "url": "https://cdn.example.com/outputs/abc123.png",
        "file_name": "abc123.png",
        "file_size": 1024000,
        "mime_type": "image/png",
        "width": 1024,
        "height": 1024
      }
    ],
    "consume_coins": 5,
    "created_at": 1718200000,
    "completed_at": 1718200015
  }
}

Seu servidor deve retornar HTTP 2xx. Em caso de não-2xx ou timeout (10 seg), o sistema retenta até 5 vezes com backoff exponencial (60s → 120s → 240s → 480s → 960s).

Códigos de erro

Todas as respostas de erro usam formato unificado: {"code": código, "message": "identificador", "data": {}}

Código de erro message Descrição
20001api_key_requiredChave de API não fornecida
20001invalid_api_keyChave de API inválida
20001ip_not_allowedIP não está na whitelist
20001permission_deniedPermissão negada
30001tool_not_foundFerramenta não encontrada
30001task_not_foundTarefa não encontrada
30001insufficient_coinsSaldo de moedas insuficiente
30001task_submit_failedEnvio de tarefa falhou
30001task_query_failedConsulta de tarefa falhou
30001task_already_existsTarefa já existe (idempotência)
40001tool_id_requiredParâmetro tool_id ausente
40001param_errorErro de parâmetro
40001webhook_url_invalidFormato de webhook_url inválido
40001params_must_be_json_object_or_arrayparams deve ser um objeto ou array JSON
40001execution_options_must_be_json_object_or_arrayexecution_options deve ser um objeto ou array JSON
Faixas de códigos de erro
Faixa Categoria
1xxxxErro de sistema
2xxxxErro de autenticação
3xxxxErro de lógica de negócio
4xxxxErro de parâmetro
5xxxxErro de dependência externa