Packages
aigptimage
0.1.0
Lightweight Elixir helpers for AI GPT Image API, GPT Image 2 workflows, and MCP endpoints.
Current section
Files
Jump to
Current section
Files
lib/aigptimage.ex
defmodule Aigptimage do
@moduledoc """
Small helpers for linking to AI GPT Image and building public API requests.
[AI GPT Image](https://aigptimage.com/) provides AI image generation,
editing, API, and MCP workflows, including GPT Image 2 style image generation
helpers for creators and developers.
"""
@base_url "https://aigptimage.com"
@default_image_model "gpt-image-2-text-to-image"
@doc """
Returns the AI GPT Image homepage URL.
## Examples
iex> Aigptimage.homepage_url()
"https://aigptimage.com/"
"""
def homepage_url do
@base_url <> "/"
end
@doc """
Returns public metadata for AI GPT Image.
## Examples
iex> Aigptimage.metadata().default_image_model
"gpt-image-2-text-to-image"
"""
def metadata do
%{
name: "AI GPT Image",
slug: "aigptimage",
url: homepage_url(),
description:
"AI image generation and editing helpers for GPT Image 2 style workflows, prompt examples, API automation, and MCP integrations.",
category: "AI Image Generator",
contact_email: "support@aigptimage.com",
default_image_model: @default_image_model
}
end
@doc """
Returns the public createTask API URL.
## Examples
iex> Aigptimage.api_create_task_url()
"https://aigptimage.com/api/v1/jobs/createTask"
"""
def api_create_task_url(base_url \\ @base_url) when is_binary(base_url) do
clean_base_url(base_url) <> "/api/v1/jobs/createTask"
end
@doc """
Returns the public recordInfo API URL for a task id.
## Examples
iex> Aigptimage.api_record_info_url("task 123")
"https://aigptimage.com/api/v1/jobs/recordInfo?taskId=task%20123"
"""
def api_record_info_url(task_id, base_url \\ @base_url)
when is_binary(task_id) and is_binary(base_url) do
id = String.trim(task_id)
if id == "" do
raise ArgumentError, "task_id is required"
end
clean_base_url(base_url) <> "/api/v1/jobs/recordInfo?taskId=" <> URI.encode(id)
end
@doc """
Returns the MCP endpoint URL.
## Examples
iex> Aigptimage.mcp_url()
"https://aigptimage.com/api/mcp"
"""
def mcp_url(base_url \\ @base_url) when is_binary(base_url) do
clean_base_url(base_url) <> "/api/mcp"
end
@doc """
Builds a createTask request body for GPT Image 2 style image generation.
## Examples
iex> Aigptimage.build_create_task_body("A clean ecommerce product photo")
%{model: "gpt-image-2-text-to-image", input: %{prompt: "A clean ecommerce product photo"}}
"""
def build_create_task_body(prompt, opts \\ []) when is_binary(prompt) and is_list(opts) do
text = String.trim(prompt)
if text == "" do
raise ArgumentError, "prompt is required"
end
model = Keyword.get(opts, :model, @default_image_model)
input = Keyword.get(opts, :input, %{}) |> Map.put(:prompt, text)
body = %{model: model, input: input}
case Keyword.get(opts, :call_back_url) do
nil -> body
url -> Map.put(body, :callBackUrl, url)
end
end
@doc """
Returns Bearer authorization headers for API requests.
## Examples
iex> Aigptimage.bearer_headers("key").authorization
"Bearer key"
"""
def bearer_headers(api_key) when is_binary(api_key) do
key = String.trim(api_key)
if key == "" do
raise ArgumentError, "api_key is required"
end
%{
authorization: "Bearer " <> key,
content_type: "application/json"
}
end
@doc """
Returns a Markdown link to AI GPT Image.
## Examples
iex> Aigptimage.markdown_link()
"[AI GPT Image](https://aigptimage.com/)"
"""
def markdown_link(label \\ "AI GPT Image") when is_binary(label) do
"[#{String.trim(label)}](#{homepage_url()})"
end
defp clean_base_url(base_url) do
String.trim_trailing(base_url, "/")
end
end