Submit data to a form (supporting authentication)
curl --request POST \
--url https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid} \
--header 'Content-Type: application/json' \
--data '
{
"fields": [
{
"objectTypeId": "<string>",
"name": "<string>",
"value": "<string>"
}
],
"submittedAt": "<string>",
"context": {
"hutk": "<string>",
"ipAddress": "<string>",
"pageName": "<string>",
"pageUri": "<string>",
"pageId": "<string>",
"sfdcCampaignId": "<string>",
"goToWebinarWebinarKey": "<string>"
},
"legalConsentOptions": {},
"skipValidation": true
}
'import requests
url = "https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}"
payload = {
"fields": [
{
"objectTypeId": "<string>",
"name": "<string>",
"value": "<string>"
}
],
"submittedAt": "<string>",
"context": {
"hutk": "<string>",
"ipAddress": "<string>",
"pageName": "<string>",
"pageUri": "<string>",
"pageId": "<string>",
"sfdcCampaignId": "<string>",
"goToWebinarWebinarKey": "<string>"
},
"legalConsentOptions": {},
"skipValidation": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
fields: [{objectTypeId: '<string>', name: '<string>', value: '<string>'}],
submittedAt: '<string>',
context: {
hutk: '<string>',
ipAddress: '<string>',
pageName: '<string>',
pageUri: '<string>',
pageId: '<string>',
sfdcCampaignId: '<string>',
goToWebinarWebinarKey: '<string>'
},
legalConsentOptions: {},
skipValidation: true
})
};
fetch('https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}', 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://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fields' => [
[
'objectTypeId' => '<string>',
'name' => '<string>',
'value' => '<string>'
]
],
'submittedAt' => '<string>',
'context' => [
'hutk' => '<string>',
'ipAddress' => '<string>',
'pageName' => '<string>',
'pageUri' => '<string>',
'pageId' => '<string>',
'sfdcCampaignId' => '<string>',
'goToWebinarWebinarKey' => '<string>'
],
'legalConsentOptions' => [
],
'skipValidation' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}"
payload := strings.NewReader("{\n \"fields\": [\n {\n \"objectTypeId\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"submittedAt\": \"<string>\",\n \"context\": {\n \"hutk\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"pageName\": \"<string>\",\n \"pageUri\": \"<string>\",\n \"pageId\": \"<string>\",\n \"sfdcCampaignId\": \"<string>\",\n \"goToWebinarWebinarKey\": \"<string>\"\n },\n \"legalConsentOptions\": {},\n \"skipValidation\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}")
.header("Content-Type", "application/json")
.body("{\n \"fields\": [\n {\n \"objectTypeId\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"submittedAt\": \"<string>\",\n \"context\": {\n \"hutk\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"pageName\": \"<string>\",\n \"pageUri\": \"<string>\",\n \"pageId\": \"<string>\",\n \"sfdcCampaignId\": \"<string>\",\n \"goToWebinarWebinarKey\": \"<string>\"\n },\n \"legalConsentOptions\": {},\n \"skipValidation\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": [\n {\n \"objectTypeId\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"submittedAt\": \"<string>\",\n \"context\": {\n \"hutk\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"pageName\": \"<string>\",\n \"pageUri\": \"<string>\",\n \"pageId\": \"<string>\",\n \"sfdcCampaignId\": \"<string>\",\n \"goToWebinarWebinarKey\": \"<string>\"\n },\n \"legalConsentOptions\": {},\n \"skipValidation\": true\n}"
response = http.request(request)
puts response.read_body{
"redirectUri": "<string>",
"inlineMessage": "<string>"
}{
"errors": [
{
"message": "<string>"
}
]
}{
"category": "<string>",
"correlationId": "<string>",
"message": "<string>",
"subCategory": "<string>",
"errors": [
{
"message": "<string>",
"in": "<string>",
"code": "<string>",
"subCategory": "<string>",
"context": {}
}
],
"context": {},
"links": {}
}{
"category": "<string>",
"correlationId": "<string>",
"message": "<string>",
"subCategory": "<string>",
"errors": [
{
"message": "<string>",
"in": "<string>",
"code": "<string>",
"subCategory": "<string>",
"context": {}
}
],
"context": {},
"links": {}
}v3 alt
Submit data to a form (supporting authentication)
Send form submission data to a HubSpot form, specified by form ID. This endpoint requires authentication and has higher rate limits.
POST
/
submissions
/
v3
/
integration
/
secure
/
submit
/
{portalId}
/
{formGuid}
Submit data to a form (supporting authentication)
curl --request POST \
--url https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid} \
--header 'Content-Type: application/json' \
--data '
{
"fields": [
{
"objectTypeId": "<string>",
"name": "<string>",
"value": "<string>"
}
],
"submittedAt": "<string>",
"context": {
"hutk": "<string>",
"ipAddress": "<string>",
"pageName": "<string>",
"pageUri": "<string>",
"pageId": "<string>",
"sfdcCampaignId": "<string>",
"goToWebinarWebinarKey": "<string>"
},
"legalConsentOptions": {},
"skipValidation": true
}
'import requests
url = "https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}"
payload = {
"fields": [
{
"objectTypeId": "<string>",
"name": "<string>",
"value": "<string>"
}
],
"submittedAt": "<string>",
"context": {
"hutk": "<string>",
"ipAddress": "<string>",
"pageName": "<string>",
"pageUri": "<string>",
"pageId": "<string>",
"sfdcCampaignId": "<string>",
"goToWebinarWebinarKey": "<string>"
},
"legalConsentOptions": {},
"skipValidation": True
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
fields: [{objectTypeId: '<string>', name: '<string>', value: '<string>'}],
submittedAt: '<string>',
context: {
hutk: '<string>',
ipAddress: '<string>',
pageName: '<string>',
pageUri: '<string>',
pageId: '<string>',
sfdcCampaignId: '<string>',
goToWebinarWebinarKey: '<string>'
},
legalConsentOptions: {},
skipValidation: true
})
};
fetch('https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}', 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://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'fields' => [
[
'objectTypeId' => '<string>',
'name' => '<string>',
'value' => '<string>'
]
],
'submittedAt' => '<string>',
'context' => [
'hutk' => '<string>',
'ipAddress' => '<string>',
'pageName' => '<string>',
'pageUri' => '<string>',
'pageId' => '<string>',
'sfdcCampaignId' => '<string>',
'goToWebinarWebinarKey' => '<string>'
],
'legalConsentOptions' => [
],
'skipValidation' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}"
payload := strings.NewReader("{\n \"fields\": [\n {\n \"objectTypeId\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"submittedAt\": \"<string>\",\n \"context\": {\n \"hutk\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"pageName\": \"<string>\",\n \"pageUri\": \"<string>\",\n \"pageId\": \"<string>\",\n \"sfdcCampaignId\": \"<string>\",\n \"goToWebinarWebinarKey\": \"<string>\"\n },\n \"legalConsentOptions\": {},\n \"skipValidation\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}")
.header("Content-Type", "application/json")
.body("{\n \"fields\": [\n {\n \"objectTypeId\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"submittedAt\": \"<string>\",\n \"context\": {\n \"hutk\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"pageName\": \"<string>\",\n \"pageUri\": \"<string>\",\n \"pageId\": \"<string>\",\n \"sfdcCampaignId\": \"<string>\",\n \"goToWebinarWebinarKey\": \"<string>\"\n },\n \"legalConsentOptions\": {},\n \"skipValidation\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hsforms.com/submissions/v3/integration/secure/submit/{portalId}/{formGuid}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"fields\": [\n {\n \"objectTypeId\": \"<string>\",\n \"name\": \"<string>\",\n \"value\": \"<string>\"\n }\n ],\n \"submittedAt\": \"<string>\",\n \"context\": {\n \"hutk\": \"<string>\",\n \"ipAddress\": \"<string>\",\n \"pageName\": \"<string>\",\n \"pageUri\": \"<string>\",\n \"pageId\": \"<string>\",\n \"sfdcCampaignId\": \"<string>\",\n \"goToWebinarWebinarKey\": \"<string>\"\n },\n \"legalConsentOptions\": {},\n \"skipValidation\": true\n}"
response = http.request(request)
puts response.read_body{
"redirectUri": "<string>",
"inlineMessage": "<string>"
}{
"errors": [
{
"message": "<string>"
}
]
}{
"category": "<string>",
"correlationId": "<string>",
"message": "<string>",
"subCategory": "<string>",
"errors": [
{
"message": "<string>",
"in": "<string>",
"code": "<string>",
"subCategory": "<string>",
"context": {}
}
],
"context": {},
"links": {}
}{
"category": "<string>",
"correlationId": "<string>",
"message": "<string>",
"subCategory": "<string>",
"errors": [
{
"message": "<string>",
"in": "<string>",
"code": "<string>",
"subCategory": "<string>",
"context": {}
}
],
"context": {},
"links": {}
}Scope requirements
Scope requirements
Pfadparameter
The HubSpot portal the form belongs to.
The ID of the form you're sending data to.
Body
application/json
A list of form field names and the values for those fields, up to 1000 fields can be included.
Maximum array length:
1000Show child attributes
Show child attributes
A millisecond timestamp representing the time of the form submission. This can be used to backdate the submission, but using a time more than one month old will result in an error.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Whether or not to skip validation based on the form settings. Defaults to false. Note: This parameter is deprecated.
Antwort
Form submission successful
Zuletzt geändert am 1. April 2026
⌘I