Guia de uso
Como baixar imagens de links do ChatGPT, pacotes de exportação ou gen_id
Link ainda abre, só o pacote de exportação, link expirado, só resta o gen_id: como recuperar a imagem original em cada um dos quatro casos.
Para baixar imagens de links do ChatGPT, é preciso salvar o arquivo enquanto o link ainda abre. Os links de imagem do ChatGPT são temporários e, depois de expirarem, nem com o gen_id é possível recuperar a imagem original.
Primeiro veja o que ainda tem em mãos e depois escolha o método correspondente:
| O que você tem | Como recuperar | Resultado |
|---|---|---|
| Um link de imagem que ainda abre, ou a conversa original | Abrir a imagem, baixar o arquivo, salvar no seu próprio armazenamento | Normalmente consegue preservar a imagem original |
Exportação completa de dados do ChatGPT (conversations.json mais os arquivos de imagem) |
Usar o ID de file-service:// para procurar na pasta da exportação |
Se a imagem estiver no pacote de exportação, dá para recuperar |
Link backend-api ou oaiusercontent já expirado |
Voltar à conversa original, verificar a exportação completa ou gerar novamente | Alterar o link em si não o torna válido de novo |
Resta apenas um gen_id |
Gerar novamente com o prompt original | Os pixels da imagem original não podem ser recuperados |
| Fluxo que precisa gerar imagens em lote repetidamente | Gerar com uma API documentada, baixar e salvar no seu próprio endereço | As imagens futuras ficam nas suas mãos |
A diferença crucial é: um link assinado ainda válido permite baixar o arquivo, enquanto o gen_id é apenas um identificador dentro da conversa e não baixa nada.
O link ainda abre: baixe diretamente
Se a conversa original ainda existe, abra a imagem gerada e use o botão de download nativo do ChatGPT. Se você copiou o link da imagem, abra com o link completo (não apague a sequência de parâmetros depois de ?) e salve imediatamente.
Após baixar, confirme estes pontos antes de considerar concluído:
- Retorna HTTP 200;
- O tipo de conteúdo é imagem, como
image/pngouimage/webp; - O tamanho do arquivo é normal, não algumas centenas de bytes;
- É possível abrir e é exatamente a imagem que você quer.
Um link que só abre no seu navegador atual não pode ser usado como endereço de longo prazo: o navegador pode ainda carregar o estado de login ou uma assinatura recém-emitida. Baixe o arquivo, envie para o seu próprio armazenamento e não repasse diretamente links do ChatGPT nem os inclua no seu produto.
Por que os links de imagem do ChatGPT expiram
Uma imagem gerada pode ter várias referências internas no ChatGPT:
gen_id: o identificador de uma determinada geração na conversa.file-service://file-...: um ponteiro interno de arquivo, não é um endereço web.chatgpt.com/backend-api/...efiles.oaiusercontent.com/...: links de download assinados temporários.
Cada um tem sua função, e nenhum deles é um endereço público permanente de imagem.
Um link copiado que não abre costuma ter duas causas:
HTTP 422
missing query fields such as p or ts
O link foi copiado incompleto, faltando parâmetros de assinatura, ou alguma ferramenta removeu a parte depois de ? ao colar.
HTTP 404
ResourceNotFound
A assinatura ou o arquivo expirou, o arquivo foi excluído, ou a requisição saiu do contexto em que o link foi emitido. Montar um caminho aparentemente correto com o gen_id também não restaura a assinatura nem a imagem.
Recuperar imagens de uma exportação completa de dados
Solicite a exportação de dados nas configurações do ChatGPT; o pacote completo conterá conversations.json e arquivos de imagem separados. Uma imagem no JSON se parece aproximadamente com isto:
{
"content_type": "image_asset_pointer",
"asset_pointer": "file-service://file-A1b2C3d4E5f6",
"size_bytes": 1417238,
"width": 1024,
"height": 1024,
"metadata": {
"dalle": {"gen_id": "aBcD3fGh1jKl"}
}
}
O que é útil é o trecho file-... depois de file-service://, pois ele corresponde ao nome do arquivo no pacote de exportação. O gen_id não é nome de arquivo nem credencial de download.
1. Extraia completamente o pacote de exportação
Mantenha a estrutura de diretórios original. Abrir apenas o conversations.json faz você perder a outra metade, os arquivos de imagem a serem correspondidos.
2. Encontre o ponteiro da imagem
No conversations.json, procure por "content_type": "image_asset_pointer", encontre a conversa e a imagem desejadas e copie o asset_pointer completo.
3. Extraia o ID do arquivo
Remova apenas o prefixo interno:
file-service://file-A1b2C3d4E5f6
└─ file-A1b2C3d4E5f6
Não substitua file-service:// por https:// para fazer curl, pois não é um endereço público.
4. Procure nos arquivos da exportação
macOS ou Linux:
find . -type f -iname '*file-A1b2C3d4E5f6*'
Se o pacote de exportação renomeou o arquivo ou o colocou em um diretório mais profundo, procure pelo trecho mais identificável do ID. Se tiver size_bytes, width, height, compare com os arquivos candidatos.
5. Confirme e salve no seu próprio local
Abra o arquivo candidato localmente, confirme que é a imagem certa e envie para o seu próprio S3, R2, CDN ou armazenamento da aplicação, anotando este endereço de longo prazo.
Se houver muitas imagens, use o script abaixo para listar localmente todos os IDs de imagem do pacote de exportação, sem conectar ao ChatGPT:
import json
from pathlib import Path
data = json.loads(Path("conversations.json").read_text())
seen = set()
def walk(value):
if isinstance(value, dict):
if value.get("content_type") == "image_asset_pointer":
pointer = value.get("asset_pointer", "")
if pointer.startswith("file-service://"):
seen.add(pointer.removeprefix("file-service://"))
for child in value.values():
walk(child)
elif isinstance(value, list):
for child in value:
walk(child)
walk(data)
for file_id in sorted(seen):
print(file_id)
Ter o ponteiro só indica que a imagem foi referenciada na conversa; o arquivo pode não estar no pacote de exportação. Se, após a extração completa, ainda não encontrar o arquivo correspondente, nem file-service:// nem gen_id conseguem restaurar a imagem original.
E se só restar o gen_id
Não existe nenhuma interface pública que converta gen_id em PNG, WebP ou um novo link assinado. Se a conversa original, os links utilizáveis e os arquivos do pacote de exportação se perderam, só resta gerar novamente com o prompt original e o contexto da época.
Mantenha IDs inválidos apenas como registro de investigação. Para imagens que precisam ser preservadas a longo prazo, anote:
- O prompt e os parâmetros de geração;
- Qual serviço e qual modelo foram usados;
- O ID da tarefa no serviço, para facilitar a investigação e o suporte;
- O caminho do arquivo ou endereço de longo prazo no seu próprio armazenamento.
Monte um fluxo automático de download com a API
Para gerar em lote e preservar, use uma API que já retorna arquivos de imagem. Na HiAPI, o fluxo estável é: enviar, consultar, baixar, validar, transferir.
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2/text-to-image",
"input": {
"prompt": "晨光里,书桌上放着一只纸鹤",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}'
Após obter o taskId, consulte GET /v1/tasks/{taskId}; em caso de sucesso, leia data.output[0].url e expireAt:
curl -s "https://api.hiapi.ai/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $HIAPI_API_KEY"
curl -s -o generated-image.webp "<data.output[0].url>"
O endereço retornado pela API também é temporário, mas o tempo de expiração está no resultado (expireAt), permitindo processar a tempo. Baixe antes de expirar, confirme que recebeu uma imagem e não um HTML ou um erro JSON, e então envie o arquivo para o seu próprio armazenamento.
gpt-image-2/text-to-image custa $0.03 por imagem em 1K, $0.04 em 2K e $0.06 em 4K. Para parâmetros e teste online, veja a página do modelo GPT Image 2; para o formato da requisição, veja a documentação de criação de tarefas.
Prática de armazenamento à prova de expiração de links
Para cada tarefa bem-sucedida:
- Salve o ID da tarefa antes de consultar, para que o worker não reenvie nem cobre novamente ao tentar de novo.
- Baixe o arquivo enquanto o endereço assinado ainda é válido.
- Verifique o código de status, o tipo de conteúdo e o tamanho do arquivo; só aceite se for uma imagem.
- Envie usando um caminho de arquivo definido por você.
- Guarde o seu próprio endereço no banco de dados; o endereço temporário fica apenas para investigação de curto prazo.
Perguntas frequentes
Como baixar imagens de links do ChatGPT?
Enquanto o link ainda abre, use o link completo (com os parâmetros de assinatura) para abrir, baixe o arquivo de imagem e salve no seu próprio armazenamento. Trate como temporário qualquer link que só abra no navegador em que você está logado.
Existe uma interface oficial para baixar por gen_id?
Não. O ChatGPT não expõe nenhuma interface pública do tipo "enviar gen_id e receber a imagem"; esse identificador só tem significado na conversa original.
Por que o link de imagem do ChatGPT retorna 422?
Geralmente o link assinado está sem os parâmetros necessários. Se você copiou apenas o caminho, ou a ferramenta removeu a parte depois de ?, o link se torna inválido.
Por que o mesmo link depois passa a retornar 404?
Tanto o link assinado quanto o arquivo são temporários. Após expirar, retornar ResourceNotFound é normal, e o gen_id não renova a validade.
Como encontrar as imagens file-service:// no pacote de exportação?
Copie o ID do arquivo depois de file-service://, procure no pacote de exportação completamente extraído o nome de arquivo que contém esse ID e confira com o tamanho e as dimensões.
Como obter um endereço permanente de imagem?
Enquanto o arquivo de origem ainda pode ser baixado, envie-o para o seu próprio armazenamento e guarde o seu próprio endereço. A permanência depende do seu armazenamento, não do link de download temporário do serviço.
Artigos relacionados
Ver todos os artigos →-
Guia de uso
Guia de introdução ao seedream-5.0-pro/image-to-image: capacidades, preços e pontos de integração
Limites de capacidade, modelo de cobrança e práticas de integração de engenharia do modelo de edição de imagem da ByteDance
-
Guia de uso
Guia prático do seedream-5.0-pro text-to-image: limites de capacidade, integração via API e controle de custos
Perspectiva prática para desenvolvedores: dos pontos-chave dos parâmetros à estimativa de custo de US$ 0,05 por imagem
-
Guia de uso
Guia de introdução ao Hailuo 2.3 Fast image-to-video: limites de capacidade, preços e práticas de integração
Pontos-chave de seleção e integração do modelo image-to-video MiniMax para desenvolvedores