Odoo 19.0 Community · Persistent

survey.survey: fields, relations and API

The survey.survey model ("Survey") is a persistent model declared by the Surveys module, then extended by 4 other modules. It exposes 96 fields, 66 of them declared directly on the model; 10 fields from other models point to it. Below you will find every field with its technical name, type, label and relations, followed by an Odoo 19 JSON-2 API call.

Model identity

Technical name
survey.survey
Label
Survey
Type
Persistent (models.Model)
SQL table
survey_survey
Origin module
Surveys (survey)
Extended by
hr_recruitment_survey, hr_skills_survey, survey_crm, website_slides_survey
Default order (_order)
create_date DESC
Display field (_rec_name)
title
Inherits from (mixins)
mail.threadmail.activity.mixin

Model fields

66 own fields, 24 inherited from mixins and 6 automatic ORM fields. Click a name to get a direct link to that field.

96 of 96 fields shown

Technical nameLabelTypeDetails
access_modeAccess Modeselection
required

Values: public (Anyone with the link), token (Invited people only)

access_tokenAccess Tokenchar
activeActiveboolean
allowed_survey_typesAllowed survey typesjson
computed
answer_countRegisteredinteger
computed
answer_done_countAttemptsinteger
computed
answer_duration_avgAverage Duration

Average duration of the survey (in hours)

float
computed
answer_score_avgAvg Score (%)float
computed
attempts_limitNumber of attemptsinteger
background_imageBackground Imageimage
background_image_urlBackground Urlchar
computed
certificationIs a Certificationboolean
computed, stored
certification_badge_idCertification Badgemany2one
certification_badge_id_dummyCertification Badge many2one

related: certification_badge_id

certification_give_badgeGive Badgeboolean
computed, stored
certification_mail_template_idCertified Email Template

Automated email sent to the user when they succeed the certification, containing their certification document.

many2one
certification_report_layoutCertification templateselection

Values: modern_purple (Modern Purple), modern_blue (Modern Blue), modern_gold (Modern Gold), classic_purple (Classic Purple), classic_blue (Classic Blue), classic_gold (Classic Gold)

certification_validity_monthsValidity

Specify the number of months the certification is valid after being awarded. Enter 0 for certifications that never expire.

integer

added by Skills Certification (hr_skills_survey)

colorColor Indexinteger
descriptionDescription

The description will be displayed on the home page of the survey. You can use this to give the purpose and guidelines to your candidates before they start it.

html
translatable
description_doneEnd Message

This message will be displayed when survey is completed

html
translatable
generate_leadLead Generatingboolean
computed

added by Survey CRM (survey_crm)

has_conditional_questionsContains conditional questionsboolean
computed
hr_job_idsJob Positionone2many
→ hr.job

inverse: survey_id

added by Hr Recruitment Interview Forms (hr_recruitment_survey)

is_attempts_limitedLimited number of attempts

Check this option if you want to limit the number of attempts per user

boolean
computed, stored
is_time_limitedThe survey is limited in timeboolean
lang_idsLanguages

Leave the field empty to support all installed languages.

many2many
lead_countLeads

Number of leads created by this survey

integer
computed

added by Survey CRM (survey_crm)

lead_idsLeadone2many

inverse: origin_survey_id

added by Survey CRM (survey_crm)

page_idsPagesone2many
computed
progression_modeDisplay Progress as

If Number is selected, it will display the number of questions answered on the total number of question to answer.

selection

Values: percent (Percentage left), number (Number)

question_and_page_idsSections and Questionsone2many

inverse: survey_id

question_count# Questionsinteger
computed
question_idsQuestionsone2many
computed
questions_layoutPaginationselection
required

Values: page_per_question (One page per question), page_per_section (One page per section), one_page (One page with all the questions)

questions_selectionQuestion Selection

If randomized is selected, you can configure the number of random questions by section. This mode is ignored in live session.

selection
required

Values: all (All questions), random (Randomized per Section)

restrict_user_idsRestricted tomany2many
scoring_max_obtainableMaximum obtainable scorefloat
computed
scoring_success_minRequired Score (%)float
scoring_typeScoringselection
requiredcomputed, stored

Values: no_scoring (No scoring), scoring_with_answers_after_page (Scoring with answers after each page), scoring_with_answers (Scoring with answers at the end), scoring_without_answers (Scoring without answers)

session_answer_countAnswers Countinteger
computed
session_availableLive session availableboolean
computed
session_codeSession Code

This code will be used by your attendees to reach your session. Feel free to customize it however you like!

char
computed, stored
session_question_answer_countQuestion Answers Countinteger
computed
session_question_idCurrent Question

The current question of the survey session.

many2one
session_question_start_timeCurrent Question Start Time

The time at which the current question has started, used to handle the timer for attendees.

datetime
session_show_leaderboardShow Session Leaderboard

Whether or not we want to show the attendees leaderboard for this survey.

boolean
computed
session_speed_ratingReward quick answers

Attendees get more points if they answer quickly

boolean
session_speed_rating_time_limitTime limit (seconds)

Default time given to receive additional points for right answers

integer
session_start_timeCurrent Session Start Timedatetime
session_stateSession Stateselection

Values: ready (Ready), in_progress (In Progress)

slide_channel_countCourses Countinteger
computed

added by Course Certifications (website_slides_survey)

slide_channel_idsCertification Courses

The courses this survey is linked to through the e-learning application

one2many
computed

added by Course Certifications (website_slides_survey)

slide_idsCertification Slides

The slides this survey is linked to through the e-learning application

one2many

inverse: survey_id

added by Course Certifications (website_slides_survey)

success_countSuccessinteger
computed
success_ratioSuccess Ratio (%)integer
computed
survey_typeSurvey Typeselection
required

Values: survey (Survey), live_session (Live session), assessment (Assessment), custom (Custom)

team_idAssign Leads tomany2one

added by Survey CRM (survey_crm)

time_limitTime limit (minutes)float
titleSurvey Titlechar
requiredtranslatable
user_idResponsiblemany2one
user_input_idsUser responsesone2many
read-only

inverse: survey_id

users_can_go_backUsers can go back

If checked, users can go back to previous pages.

boolean
users_can_signupUsers can signupboolean
computed
users_login_requiredRequire Login

If checked, users have to login before answering even with a valid token.

boolean
activity_calendar_event_idNext Activity Calendar Eventmany2one
computed

inherited from mail.activity.mixin

activity_date_deadlineNext Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

activity_exception_decorationActivity Exception Decoration

Type of the exception activity on record.

selection
computed

Values: warning (Alert), danger (Error)

inherited from mail.activity.mixin

activity_exception_iconIcon

Icon to indicate an exception activity.

char
computed

inherited from mail.activity.mixin

activity_idsActivitiesone2many

inverse: res_id

inherited from mail.activity.mixin

activity_stateActivity State

Status based on activities Overdue: Due date is already passed Today: Activity date is today Planned: Future activities.

selection
computed

Values: overdue (Overdue), today (Today), planned (Planned)

inherited from mail.activity.mixin

activity_summaryNext Activity Summarychar

related: activity_ids.summary

inherited from mail.activity.mixin

activity_type_iconActivity Type Iconchar

related: activity_ids.icon

inherited from mail.activity.mixin

activity_type_idNext Activity Typemany2one

related: activity_ids.activity_type_id

inherited from mail.activity.mixin

activity_user_idResponsible Usermany2one
read-onlycomputed

inherited from mail.activity.mixin

has_messageHas Messageboolean
computed

inherited from mail.thread

message_attachment_countAttachment Countinteger
computed

inherited from mail.thread

message_follower_idsFollowersone2many

inverse: res_id

inherited from mail.thread

message_has_errorMessage Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_has_error_counterNumber of errors

Number of messages with delivery error

integer
computed

inherited from mail.thread

message_has_sms_errorSMS Delivery error

If checked, some messages have a delivery error.

boolean
computed

inherited from mail.thread

message_idsMessagesone2many

inverse: res_id

inherited from mail.thread

message_is_followerIs Followerboolean
computed

inherited from mail.thread

message_needactionAction Needed

If checked, new messages require your attention.

boolean
computed

inherited from mail.thread

message_needaction_counterNumber of Actions

Number of messages requiring action

integer
computed

inherited from mail.thread

message_partner_idsFollowers (Partners)many2many
computed

inherited from mail.thread

my_activity_date_deadlineMy Activity Deadlinedate
read-onlycomputed

inherited from mail.activity.mixin

rating_idsRatingsone2many

inverse: res_id

inherited from mail.thread

website_message_idsWebsite Messages

Website communication history

one2many

inverse: res_id

inherited from mail.thread

create_dateCreated ondatetime
read-onlyautomatic
create_uidCreated bymany2one
read-onlyautomatic
display_nameDisplay Namechar
read-onlycomputedautomatic
idIDinteger
read-onlyautomatic
write_dateLast Updated ondatetime
read-onlyautomatic
write_uidLast Updated bymany2one
read-onlyautomatic

Relations

Models linked from this model

Fields of other models pointing here

Reading this model through the API

Odoo 19 JSON-2 API call reading the first five records with real fields of the model. Replace the instance, database and API key with your own.

curl
curl -X POST "https://your-instance.odoo.com/json/2/survey.survey/search_read" \
  -H "Authorization: bearer $ODOO_API_KEY" \
  -H "X-Odoo-Database: your-db" \
  -H "Content-Type: application/json" \
  -d '{"domain":[],"fields":["title","access_mode","questions_layout","questions_selection","scoring_type"],"limit":5}'
Python (requests)
import requests

BASE_URL = "https://your-instance.odoo.com/json/2"
headers = {"Authorization": f"bearer {API_KEY}", "X-Odoo-Database": "your-db"}

res = requests.post(
    f"{BASE_URL}/survey.survey/search_read",
    headers=headers,
    json={"domain": [], "fields": ["title","access_mode","questions_layout","questions_selection","scoring_type"], "limit": 5},
)
res.raise_for_status()
print(res.json())
  • External API access requires Odoo's Custom plan.
  • XML-RPC and JSON-RPC will be removed in Odoo 22 (fall 2028): use JSON-2.
  • The access rights and record rules of the key's user apply.

Cite this tool

Writing a tutorial, internal documentation or a forum answer? Copy this link to send your readers to the up-to-date reference.

<a href="https://aidoo.ai/en/outils/explorateur-modeles-odoo/survey-survey">survey.survey (Odoo 19.0)</a>

Sources

Data verified on September 23, 2026 · Odoo 19.0 Community

Have an Odoo project, or want to put your ERP to work with AI? Let's talk

Implementation, custom module development, connecting Claude or ChatGPT to your data: tell us about your context and we will reply within 24 business hours.