Get Form
curl --request GET \
--url https://pub-api.conversion.ai/api/v2/forms/{formId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://pub-api.conversion.ai/api/v2/forms/{formId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://pub-api.conversion.ai/api/v2/forms/{formId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pub-api.conversion.ai/api/v2/forms/{formId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pub-api.conversion.ai/api/v2/forms/{formId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pub-api.conversion.ai/api/v2/forms/{formId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pub-api.conversion.ai/api/v2/forms/{formId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"form": {
"id": "9f3c1a2e-6b7d-4e2a-9c1f-1a2b3c4d5e6f",
"name": "Demo Request",
"createdAt": "2026-05-01T12:00:00Z",
"updatedAt": "2026-06-11T09:30:00Z",
"submissionCount": 412,
"lastSubmittedAt": "2026-07-10T08:15:00Z",
"fields": [
{
"fieldId": "aa8b2c1d-4e5f-4a6b-8c9d-0e1f2a3b4c5d",
"name": "email",
"type": "EMAIL",
"required": true,
"hidden": false
},
{
"fieldId": "bb9c3d2e-5f6a-4b7c-9d0e-1f2a3b4c5d6e",
"name": "company_size",
"type": "DROPDOWN",
"required": false,
"hidden": false
},
{
"fieldId": "cc0d4e3f-6a7b-4c8d-0e1f-2a3b4c5d6e7f",
"name": "message",
"type": "LONG_ANSWER",
"required": false,
"hidden": false
},
{
"fieldId": "dd1e5f4a-7b8c-4d9e-1f2a-3b4c5d6e7f8a",
"name": "utm_source",
"type": "HIDDEN",
"required": false,
"hidden": true
}
]
}
}
}{
"error": {
"code": "unauthorized",
"message": "API key is required"
}
}{
"error": {
"code": "form_not_found",
"message": "form not found"
}
}{
"error": {
"code": "internal_error",
"message": "failed to load form"
}
}Forms
Get Form
Get a tracked, published Conversion-native form by id, including the fields of its published definition. Each field’s fieldId is the key used to reference the field in the forms JavaScript API and in submission data.
Only tracked, published Conversion-native forms resolve; unknown ids, forms belonging to another workspace, external and ad forms, and untracked, archived, or never-published forms all return a form_not_found error.
GET
/
v2
/
forms
/
{formId}
Get Form
curl --request GET \
--url https://pub-api.conversion.ai/api/v2/forms/{formId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://pub-api.conversion.ai/api/v2/forms/{formId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://pub-api.conversion.ai/api/v2/forms/{formId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://pub-api.conversion.ai/api/v2/forms/{formId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://pub-api.conversion.ai/api/v2/forms/{formId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://pub-api.conversion.ai/api/v2/forms/{formId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://pub-api.conversion.ai/api/v2/forms/{formId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"form": {
"id": "9f3c1a2e-6b7d-4e2a-9c1f-1a2b3c4d5e6f",
"name": "Demo Request",
"createdAt": "2026-05-01T12:00:00Z",
"updatedAt": "2026-06-11T09:30:00Z",
"submissionCount": 412,
"lastSubmittedAt": "2026-07-10T08:15:00Z",
"fields": [
{
"fieldId": "aa8b2c1d-4e5f-4a6b-8c9d-0e1f2a3b4c5d",
"name": "email",
"type": "EMAIL",
"required": true,
"hidden": false
},
{
"fieldId": "bb9c3d2e-5f6a-4b7c-9d0e-1f2a3b4c5d6e",
"name": "company_size",
"type": "DROPDOWN",
"required": false,
"hidden": false
},
{
"fieldId": "cc0d4e3f-6a7b-4c8d-0e1f-2a3b4c5d6e7f",
"name": "message",
"type": "LONG_ANSWER",
"required": false,
"hidden": false
},
{
"fieldId": "dd1e5f4a-7b8c-4d9e-1f2a-3b4c5d6e7f8a",
"name": "utm_source",
"type": "HIDDEN",
"required": false,
"hidden": true
}
]
}
}
}{
"error": {
"code": "unauthorized",
"message": "API key is required"
}
}{
"error": {
"code": "form_not_found",
"message": "form not found"
}
}{
"error": {
"code": "internal_error",
"message": "failed to load form"
}
}Authorizations
Your Conversion API key. Found in Settings > Integrations in the dashboard. Format: sk_live_<key_id>_<secret>.
Path Parameters
The Conversion form id, as returned by GET /v2/forms.
Response
Form retrieved successfully.
Show child attributes
Show child attributes
Was this page helpful?
⌘I